Dockerでコンテナ化したnginxで、スタティックなコンテンツだけではなく、動的なコンテンツを表示したくなり、docker+nginxの環境で更にphpを追加しました。その方法をまとめました。
docker + nginxの環境を構築する
始めにdocker+nginxの環境を作ります。nginxをdockerで動かす方法については以下の記事をご覧ください。
また、nginxの設定ファイルを編集する必要もあります。nginxの設定ファイルをコンテナからコピーして、編集し、使用するように設定する方法については、以下の記事をご覧ください。
この記事では、上記の記事でdocker+nginxを作ったところに、phpを追加することを前提にしています。
ComposeでPHPのコンテナを追加
Docker Composeでnginxの他に、phpのコンテナを追加します。次のように、docker-compose.yml
を編集して、php
の設定を追加します。
version: "3"
services:
nginx:
build: .
ports:
- 8080:8080
volumes:
- ./content_home:/usr/share/nginx/html
php:
image: php:7-fpm
volumes:
- ./content_home:/usr/share/nginx/html
追加したのは、php:
以下の部分です。
nginxの設定
nginxの設定を変更します。default.conf
ファイルを次のように編集します。
server {
listen 8080;
server_name localhost;
#limit_rate 10K;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
#error_page 404 /404.html;
error_page 405 =200 $uri;
# 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$ {
fastcgi_pass php: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;
#}
}
変更を加えたの以下の場所です。
root
の定義場所を移動index
の定義場所を移動index
にindex.php
を追加location /
の定義を変更location ~ \.php?
の定義を追加
テスト
上手く動作するかテストします。content_home
に以下の内容を入れたindex.php
ファイルを作成します。
<?php
echo phpinfo();
?>
次にターミナルで以下の様にして、コンテナを実行します。
$ docker-compose up -d --build
ブラウザでhttp://localhost:8080/index.php
を開きます。成功すると次のようにphpinfo()
の出力結果が表示されます。
投稿者プロフィール

最新の投稿
HowTo2022.02.13Ubuntu Server のシステム更新
書籍執筆2022.02.10ARKitの物理シミュレーション
書籍執筆2022.02.04ARKitでコリジョンとアニメーション
HowTo2022.01.30MayaからUSD, USDZを書き出す方法