docker構築lnmp+redis環境(基礎編)
//パブリックライブラリを検索するnginx docker search nginx//適切なダウンロードを見つける
//mysqlのインストール:5.6
//インストールredis:3.2
php-fpmのインストール
nginx-t//プロファイルパス/etc/nginx/nginxを表示します.conf//nginxプロファイルパスnetstat-tanlp//ポートkill pid//プロセスpidプロセスidを殺す
//実行順序サービスは分離された個別のミラーであるため注意–link関連付けの下//linkはコンテナ起動時に/etc/hostsファイルを変更することによって実現される//mysqlを実行する
//redis容器の運転
//phpの実行
//nginxコンテナの実行-v前がホストホストのディレクトリ:コンテナのディレクトリ
//php容器取付拡張へ
ホストのnginxを構成します.conf
まとめ:1、php-fpmコンテナにとって、php-fpmのwww.confプロファイルでは、傍受されたIPは127.0.0.1ではなく、0.0.0.0でなければならない.そうでないと、後続のnginx側に404が表示されます(問題を参照).
Copy ;Listen=127.0.0.1:9000 listen=0.0.0.0:9000 2、nginxコンテナは–linkを使用してphp-fpmコンテナに接続する必要があります.3、nginxコンテナとphp-fpmコンテナのwwwディレクトリは一致している必要があります.4、nginx容器配置fastcgi_passの場合は–linkの名前に変更する必要があります(実際にはホスト名で、nginxコンテナの/etc/hostsにホストレコードが追加されます).5.nginxコンテナがより多くのポートアクセスをサポートする必要がある場合、-p範囲表示を使用します.例:-p 80-90:80-90.または複数の-pパラメータ.6、-vパラメータで指定されたローカルマウントディレクトリ(例の/work)サブディレクトリ(例えば/www)は、シンクホストではソフトリンクではありません.そうしないと、nginx 404がコンテナ内で無効であるため、nginx 404になります.ただし/work自体はソフトリンクであってもよい.
docker pull nginx
//mysqlのインストール:5.6
docker pull mysql:5.6
//インストールredis:3.2
docker pull redis:3.2
php-fpmのインストール
docker pull php:7.1.7-fpm-alpine
nginx-t//プロファイルパス/etc/nginx/nginxを表示します.conf//nginxプロファイルパスnetstat-tanlp//ポートkill pid//プロセスpidプロセスidを殺す
//実行順序サービスは分離された個別のミラーであるため注意–link関連付けの下//linkはコンテナ起動時に/etc/hostsファイルを変更することによって実現される//mysqlを実行する
docker run -p 3306:3306 --name mymysql -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6
//redis容器の運転
docker run --name redis -p 6379:6379 -v /data/redis/conf/:/etc/redis/redis.conf -d redis:3.2
//phpの実行
docker run -p 9000:9000 --name php7.17-fpm -v /var/www:/var/www/html -v /var/php7.1:/usr/local/etc/php --link mymysql:mymysql --link redis:redis --privileged=true -d php:7.1.7-fpm-alpine
//nginxコンテナの実行-v前がホストホストのディレクトリ:コンテナのディレクトリ
docker run -p 80:80 --name nginx --privileged=true -v /var/nginx:/usr/share/nginx/html -v /var/nginx/log:/var/log/nginx -d nginx:latest
//php容器取付拡張へ
docker exec -ti php7.17-fpm /bin/sh
docker exec -ti php7.17-fpm /bin/bash
//
docker-php-ext-install pdo pdo_mysql
docker-php-ext-install redis
ホストのnginxを構成します.conf
server {
listen 80;
server_name localhost;
root "~/var/www";
location / {
index index.html index.htm index.php l.php;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
まとめ:1、php-fpmコンテナにとって、php-fpmのwww.confプロファイルでは、傍受されたIPは127.0.0.1ではなく、0.0.0.0でなければならない.そうでないと、後続のnginx側に404が表示されます(問題を参照).
Copy ;Listen=127.0.0.1:9000 listen=0.0.0.0:9000 2、nginxコンテナは–linkを使用してphp-fpmコンテナに接続する必要があります.3、nginxコンテナとphp-fpmコンテナのwwwディレクトリは一致している必要があります.4、nginx容器配置fastcgi_passの場合は–linkの名前に変更する必要があります(実際にはホスト名で、nginxコンテナの/etc/hostsにホストレコードが追加されます).5.nginxコンテナがより多くのポートアクセスをサポートする必要がある場合、-p範囲表示を使用します.例:-p 80-90:80-90.または複数の-pパラメータ.6、-vパラメータで指定されたローカルマウントディレクトリ(例の/work)サブディレクトリ(例えば/www)は、シンクホストではソフトリンクではありません.そうしないと、nginx 404がコンテナ内で無効であるため、nginx 404になります.ただし/work自体はソフトリンクであってもよい.