docker構築lnmp+redis環境(基礎編)


//パブリックライブラリを検索するnginx docker search nginx//適切なダウンロードを見つける
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自体はソフトリンクであってもよい.