dockerのubuntu18.04でnginxとphpの環境作成
前回の続き
tl;dr
githubに載せたので、そちらでどうぞ。
おさらい
dockerコンテナを使ってubuntu 18に入れたnginxでphpを動かす環境を作ります。
最終的にはKubernetesへのデプロイも考えてますが、まずはdocker-composeで動かせるところまで。
構成
最終的にはこんな感じになります。
. |--docker-compose.yml |--html | |--index.php |--nginx | |--Dockerfile | |--nginx.conf | |--server.conf |--php |--Dockerfile
コンテナ使わずにやるならnginxとphpは1つのインスタンスに入れると思いますが、コンテナはプロセス毎に分けるのがベストプラクティスとされているので分けます。敢えてね。
設定ファイル
nginx
Dockerfile for nginx on ubuntu
server.conf(抜粋)
phpの処理をphpコンテナに送ります。
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass php:9000;
}
fastcgi_pass php:9000;
のphpはdocker-compose.ymlのservice名で名前解決しているので、適宜変更してください。
nginx.conf
include /etc/nginx/sites-enabled/*; を消すだけです。
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; include /etc/nginx/conf.d/*.conf; }
php
docker-compose
compose nginx and php via http
nginxとphpの通信
server.confに記述しているように、phpファイルはphpのコンテナに処理を移譲します。
このnginxとphpのやりとりにsocket通信かhttpを設定できて、どちらを使うかによって設定が変わります。
上記の設定ではhttpで行なっているので、socket通信する場合はgithubの方に修正箇所を記載したのでそちらを参照してください。
まとめ
phpを動かすのが初めてだったので少し苦戦しましたが、最終的な内容を見るとこんなもんかという感じでまだまだ勉強せな、となりました。。
次回はKubernetesで動かしてみます!