docker lnmp環境の構築
10356 ワード
dockerベースコマンド検索 ダウンロード 表示 単一削除 複数削除 削除NONE 表示情報 占用 表示 再起動 停止 その他のコマンドネットワーク関連 ネットワークキャッシュのクリア ネットワークリストの表示 詳細を表示 マウントディレクトリ パージキャッシュ 表示リスト 詳細を表示 システム関連 システム情報 表示占有 すべての を含む
Dockerfileの詳細
ファイルコマンドの詳細 を使用する. を使用します. を解凍して削除することをお勧めします. をダウンロードしたりすることができます. を作成 ミラーを構築する上での注意点できるだけ縮小ベースミラー、例えばalpineを選択してミラーの体積を減らす 不要なファイルをミラーにパッケージしないでください 各種のコンパイル、ダウンロード、インストール中に発生したキャッシュファイルをできるだけ削除してミラー体積を減らす できるだけ段階的にミラーを構築する一歩一歩の拡張ミラー機能を使用して、多層ミラーの発生を避ける CMDおよびENTRYPOINT、COPYおよびADDなどのdockerfileのキーワードを正確に使用する ビルドコマンドの詳細
docker-compose
ファイルコマンド
コマンドドキュメントアドレス
このファイルは、主な構成ファイルであり、主に
一般的なコマンド: を指定します. をサポートします. と同様である. と呼ぶこともできる
CLIコマンドサービス開始 サービス一時停止 再起動サービス アクセス $1 $2ベースミラーサーバによって決定され、一般的なaplineは 表示 実操、
プロジェクトディレクトリの作成
次のプロジェクト構造を作成します.sitesディレクトリ配置プロジェクトファイル servicesディレクトリ配置サービス関連構成 script配置カスタムスクリプト
編集
編集
編集
以上、我々のlnmp環境は基本的に構築されました.以下、Php解析に関する構成を行います.
修正
変更
このディレクトリは、各プロジェクトのプロファイルであり、必要に応じて単一または複数のサービスを構成できます.
サービスの開始
上記の手順は、phpで少し拡張をコンパイルしているので、自分のニーズに応じて応答の削除を行うこともできます.
ブラウザからのアクセス
images
についてdocker search php
docker pull php:7.3.6-fpm-alpine3.9
docker images
またはdocker image ls
docker rmi imageID
docker rmi -f $(docker image ls -aq)
docker rmi -f $(docker images -f "dangling=true" -q)
docker inspect imageID
docker stats
container
についてdocker ps -a
docker restart containerID
docker stop containerID
docker network prune
docker network ls
docker network inspect netwokrNAME
docker volume prune
docker volume ls
docker volume inspect VOLUMENAME
docker system info
docker system df
docker system prune
構築に失敗したミラー、使用されていないネットワーク構成、一時停止したコンテナDockerfileの詳細
ファイルコマンドの詳細
FROM
どのミラーをベースミラーとして指定LABEL
プロジェクトを通じてミラーを組織したり、ライセンス情報を記録したり、自動化を支援したり、その他の理由でミラーにラベルを追加したりすることができます.docker inspect imageID
で表示可能EXPOSE
ポートがオープンしているが、表示されている宣言だけでこのポートが利用可能であり、呼び出しが容易である.具体的なポートマッピングはdocker run
のときに-p
で指定する必要がある.-p
の後にポート番号が付いていない場合は、EXPOSE
で設定された値VOLUME
buildのイメージを指定します.それらのディレクトリが起動可能なときにファイルシステムの起動コンテナにマウントされるときに-vバインドフォーマットVOLUME[「ディレクトリ」USER
buildまたは起動時ユーザがRUN CMD ENTRYPONT実行時のユーザを指定ENV
環境変数の構成に使用されることが多いCOPY
レプリケーションは軽量で、より透明で、使用することをお勧めします.ミラー構築には小さな占有スペースが必要なので、wgetを使用してリモートファイルをローカルにダウンロードし、copyをミラーに解凍し、さもなくばADDを使用すると、ダウンロードパッケージADD
コピーはtarパッケージを解凍したり、リモートネットワークファイルRUN
コマンドを実行し、新しいImage LayerCMD
コンテナ起動後にデフォルトで実行されるコマンドとパラメータを設定ENTRYPOINT
コンテナ起動時に実行するコマンドを設定docker build -f "Dockerfile" -t my-mysql:v1.0 .
docker build --help
を使用して表示できます.docker-compose
ファイルコマンド
コマンドドキュメントアドレス
このファイルは、主な構成ファイルであり、主に
version
、services
、network
を含み、そのうちversion
、services
が必要な要素である.一般的なコマンド:
image
購入者のベースミラーを指定build
コンストラクションコンテキストを含むパスを指定するか、contextと指定したdockerfileファイルとargsパラメータ値を持つオブジェクトとして指定します.context
Dockerfileファイルが存在するパスを指定dockerfile
contextで指定したディレクトリの下にあるDockerfileの名前を指定します(デフォルトはDockerfile)args
Dockerfileがbuild中に必要とするパラメータ(docker container build--build-argの役割と同等)cache_from
# v3.2に追加されたパラメータは、キャッシュされたミラーリスト(docker container build--cache_fromの役割と同等)labels
v3.3に追加されたパラメータで、ミラーのメタデータを設定します(docker container build--labelsの役割と同じです)shm_size
v3.5に追加されたパラメータで、コンテナ/dev/shmパーティションのサイズを設定します(docker container build--shm-sizeの役割と同じです)command
#コンテナ起動後にデフォルトで実行されるコマンドを上書きし、shell形式と[]形式container_name
指定容器名depends_on
コンテナ起動の依存関係を指定します.このオプションは、v 3バージョンでswarmデプロイを使用する場合に無視されますlinks
コンテナ関連、バージョン3は使用を推奨していないが、ネットワークを使用してコンテナ通信を推奨env_file
環境変数ファイルenvironment
環境変数を設定し、environmentの値はenv_を上書きできます.fileの値(docker run--envの役割に等しい)expose
ポートを露出するが、シンクホストとマッピング関係を確立することはできない.DockerfileのEXPOSE命令ports
ポートマッピングexternal_links
接続はdocker-composeではない.ymlで定義されたコンテナまたはcomposeで管理されていないコンテナextra_hosts
hostをコンテナに記録する/etc/hostsに追加logging
ログ統一出力、ログ統計networks
コンテナネットワーク構成restart
容器を自動的に再起動し、容器を取り外した後に自動的に再起動する仕組みvolumes
データボリュームマッピングは、ディレクトリ共有CLIコマンド
docker-compose up -d --build
docker-compose down
docekr-compose restart
docekr-compose exec $1 $2
docker-compose.yml
ファイルservices
で定義されたサービス名/bin/sh
、その他は'/bin/bash'docker-compose ps
docker-compose
構築プロジェクトプロジェクトディレクトリの作成
mkdir php
次のプロジェクト構造を作成します.
├── Readme.md
├── docker-compose.yml
├── script
├── services
│ ├── mariadb
│ │ └── Dockerfile
│ ├── nginx
│ │ ├── Dockerfile
│ │ ├── conf.d
│ │ │ └── default.conf
│ │ └── nginx.conf
│ ├── php
│ │ └── Dockerfile
│ └── redis
│ └── Dockerfile
└── sites
├── index.html
└── index.php
8 directories, 10 files
編集
docker-compose
ファイルversion: "3"
services:
php:
build: ./services/php
ports:
- "9001:9000"
container_name: lnmp-php
restart: always
volumes:
- ./sites:/www
- ./services/php/etc:/usr/local/etc
networks:
lnmp_net:
ipv4_address: 101.11.11.10
nginx:
build: ./services/nginx
ports:
- "81:80"
- "444:443"
container_name: lnmp-nginx
restart: always
volumes:
- ./sites:/www
- ./services/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./services/nginx/conf.d:/etc/nginx/conf.d:rw
networks:
lnmp_net:
ipv4_address: 101.11.11.11
redis:
build: ./services/redis
ports:
- "6380:6379"
container_name: lnmp-redis
networks:
lnmp_net:
ipv4_address: 101.11.11.12
mariadb:
build: ./services/mariadb
ports:
- "3307:3306"
container_name: lnmp-mariadb
restart: always
volumes:
- ./data/mariadb:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123qwe!@#
MYSQL_USER: demo
MYSQL_PASSWORD: 123456
networks:
lnmp_net:
ipv4_address: 101.11.11.13
networks:
lnmp_net:
driver: bridge
ipam:
config:
- subnet: 101.11.11.0/20
編集
services/nginx
ファイルFROM nginx:1.17.0-alpine
#
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
#
RUN apk update && apk add --upgrade \
&& apk add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
編集
services/php
ファイルFROM php:7.3.6-fpm-alpine3.9
#
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
#
RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev curl-dev\
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata \
&& docker-php-ext-install mysqli pdo_mysql opcache \
&& pecl install grpc protobuf xdebug yaf yar swoole \
&& docker-php-ext-enable xdebug yaf yar swoole grpc protobuf
以上、我々のlnmp環境は基本的に構築されました.以下、Php解析に関する構成を行います.
修正
services/nginx/nginx.conf
は、必要に応じて自分で修正できます.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
変更
services/nginx/conf.d
ディレクトリ下ファイルこのディレクトリは、各プロジェクトのプロファイルであり、必要に応じて単一または複数のサービスを構成できます.
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
#root /usr/share/nginx/html;
root /www;
index index.php index.html index.htm;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# root html;
fastcgi_pass 101.11.11.10:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
サービスの開始
cd php && docker-compose up --build -d
上記の手順は、phpで少し拡張をコンパイルしているので、自分のニーズに応じて応答の削除を行うこともできます.
ブラウザからのアクセス
http://127.0.0.1:81
,見たらphpinfo
の出力情報、おめでとうございます.lnmp環境の導入が完了しました.