#前回のおさらい
前回の記事『VultrでKUSANAGI Runs on Dockerが動くまで(その1)』ではVPC環境であるVultrにKUSANAGI RoDをインストールするところまで確認しました。
今回はWordpressを運用しやすくするため、Dockerコンテナの設定を少し変えていきたいと思います。
#動作環境など
- Ubuntu 20.04
- docker 19.03.12
- docker-compose 1.26.2
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------
kusanagi01_certbot certbot --version Restarting
kusanagi01_config docker-entrypoint.sh wp -- ... Restarting
kusanagi01_db docker-entrypoint.sh mysqld Up
kusanagi01_ftp /bin/sh -c /docker-entrypo ... Up
kusanagi01_httpd /docker-entrypoint.sh /usr ... Up 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp
kusanagi01_php /usr/local/bin/docker-entr ... Up
#修正前のdocker-compose.yaml
プロビジョニング直後はこんな感じになっています。
【主な特徴】
- それぞれのコンテナでDocumentRoot含む必要なファイル類を/home/kusanagiにマウント
- kusanagiボリュームとdatabaseボリュームを永続化
version: '3'
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 9000
services:
httpd:
container_name: kusanagi01_httpd
image: primestrategy/kusanagi-nginx:1.17.9-r0
restart: always
env_file:
- .kusanagi
- .kusanagi.httpd
volumes:
- kusanagi:/home/kusanagi
- kusanagi:/etc/letsencrypt
- kusanagi:/var/www/html/.well-known
ports:
- "8080:8080"
- "8443:8443"
extra_hosts:
- "example.com:127.0.0.1"
certbot:
container_name: kusanagi01_certbot
image: certbot/certbot:v1.6.0
restart: always
network_mode: "service:httpd"
env_file:
- .kusanagi.httpd
volumes:
- kusanagi:/var/www/html/.well-known
- kusanagi:/etc/letsencrypt
command:
- --version
## CONFIG
config:
container_name: kusanagi01_config
restart: always
build:
context: ./wpcli
user: "1000:1001"
env_file:
- .kusanagi
- .kusanagi.wp
- .kusanagi.db
volumes:
- database:/var/run/mysqld
- kusanagi:/home/kusanagi
command: wp --version
php:
container_name: kusanagi01_php
image: primestrategy/kusanagi-php:7.4.8-r0
restart: always
env_file:
- .kusanagi
- .kusanagi.php
- .kusanagi.mail
network_mode: "service:httpd"
volumes:
- database:/var/run/mysqld
- kusanagi:/home/kusanagi
## MYSQL
db:
container_name: kusanagi01_db
image: mariadb:10.5.4-focal
restart: always
user: "999:999"
env_file:
- .kusanagi.mysql
network_mode: "service:httpd"
volumes:
- database:/var/run/mysqld
- database:/var/lib/mysql
## FTPD
ftp:
container_name: kusanagi01_ftp
image: primestrategy/kusanagi-ftpd:1.0.2-r1
restart: always
network_mode: "service:httpd"
env_file:
- .kusanagi
- .kusanagi.wp
volumes:
- kusanagi:/home/kusanagi
volumes:
kusanagi:
database:
#今回の変更点
以下の点を変更します。
- nginxのログ出力をDockerの標準ログ出力に変更
- PHPのファイルアップロード設定を追加
- 不要なコンテナ(certbot)を停止
##変更点1
nginxのログ出力をDockerの標準ログ出力に変更します。
nginxフォルダの中にnginx.confファイルを作成しhttpdコンテナのnginx.confを書き換えます。nginx.confの変更部分のみ記載しておきます。
#error_log /var/log/nginx/error.log warn;
error_log /dev/stderr warn;
#access_log /var/log/nginx/access.log main;
access_log /dev/stdout main;
##変更点2
デフォルトだと2MB以上のファイルアップロードができないのでPHPのファイルアップロード設定を追加します。
phpフォルダの中にuploads.iniファイルを作成しphpコンテナにuploads.iniを追加します。
file_uploads = On
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
以下のようなフォルダ構成になります。
/home
└$USER
├https-portal ← リバプロサーバー(マルチサイト& Let’s Encrypt対応)
│ └docker-compose.yml
│
├kusanagi01 ← KUSANAGI Runs on Docker(WordPressサイト1つ目)
│ ├nginx ※追加
│ │ └nginx.conf ※追加
│ ├php ※追加
│ │ └ uploads.ini ※追加
│ └docker-compose.yml
│
└kusanagi02 ← KUSANAGI Runs on Docker(WordPressサイト2つ目)
└docker-compose.yml
##変更点3
certbotコンテナが実験中で使われていないので起動しないようにします。
こちらはdocker-compose.ymlファイルで該当箇所をコメントアウトしてしまえばOKです。
#修正後のdocker-compose.yml
version: '3'
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 9000
services:
httpd:
container_name: kusanagi01_httpd
image: primestrategy/kusanagi-nginx:1.17.9-r0
restart: always
env_file:
- .kusanagi
- .kusanagi.httpd
volumes:
- kusanagi:/home/kusanagi
#- kusanagi:/etc/letsencrypt
- kusanagi:/var/www/html/.well-known
- ./nginx/nginx.conf:/etc/nginx/nginx.conf #※追加
ports:
- "8080:8080"
- "8443:8443"
extra_hosts:
- "example.com:127.0.0.1"
#certbot:
#container_name: kusanagi01_certbot
#image: certbot/certbot:v1.6.0
#restart: always
#network_mode: "service:httpd"
#env_file:
#- .kusanagi.httpd
#volumes:
#- kusanagi:/var/www/html/.well-known
#- kusanagi:/etc/letsencrypt
#command:
#- --version
## CONFIG
config:
container_name: kusanagi01_config
restart: always
build:
context: ./wpcli
user: "1000:1001"
env_file:
- .kusanagi
- .kusanagi.wp
- .kusanagi.db
volumes:
- database:/var/run/mysqld
- kusanagi:/home/kusanagi
command: wp --version
php:
container_name: kusanagi01_php
image: primestrategy/kusanagi-php:7.4.8-r0
restart: always
env_file:
- .kusanagi
- .kusanagi.php
- .kusanagi.mail
network_mode: "service:httpd"
volumes:
- database:/var/run/mysqld
- kusanagi:/home/kusanagi
- ./php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini #※追加
## MYSQL
db:
container_name: kusanagi01_db
image: mariadb:10.5.4-focal
restart: always
user: "999:999"
env_file:
- .kusanagi.mysql
network_mode: "service:httpd"
volumes:
- database:/var/run/mysqld
- database:/var/lib/mysql
## FTPD
ftp:
container_name: kusanagi01_ftp
image: primestrategy/kusanagi-ftpd:1.0.2-r1
restart: always
network_mode: "service:httpd"
env_file:
- .kusanagi
- .kusanagi.wp
volumes:
- kusanagi:/home/kusanagi
volumes:
kusanagi:
database:
#コンテナの再作成
構成を変更したのでコンテナを作り直します。エラー無く起動することを確認します。
$ docker-compose down
Stopping kusanagi01_ftp ... done
Stopping kusanagi01_config ... done
Stopping kusanagi01_php ... done
Stopping kusanagi01_db ... done
Stopping kusanagi01_certbot ... done
Stopping kusanagi01_httpd ... done
Removing kusanagi01_ftp ... done
Removing kusanagi01_config ... done
Removing kusanagi01_php ... done
Removing kusanagi01_db ... done
Removing kusanagi01_certbot ... done
Removing kusanagi01_httpd ... done
$ docker-compose up -d
Creating network "kusanagi01_default" with driver "bridge"
Creating kusanagi01_httpd ... done
Creating kusanagi01_config ... done
Creating kusanagi01_php ... done
Creating kusanagi01_ftp ... done
Creating kusanagi01_db ... done
#動作確認
変更が反映されているか確認していきます。
##nginxのログ出力先変更
以下のコマンドでDockerのログを表示させWebのアクセスログが出力されることを確認します。
$ docker logs kusanagi01_httpd -f
0.898 BYPASS BYPASS 172.19.0.4 - - [05/Aug/2020:06:10:36 +0000] "GET / HTTP/1.0" 200 7902 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.52" "xxx.xxx.xxx.xxx"
##PHPのファイルアップロード設定
phpinfoファイルを作成しコンテナにコピーし動作確認します。コンテナにシェルアクセスして作成してもよいですけどkusanagi-dockerコマンドでコンテナへのファイルコピーができます。
<?php
phpinfo()
?>
$ cd $HOME/kusanagi01
$ kusanagi-docker config push
chown: unknown user/group kusanagi:www
ERROR: Failed.
ブラウザでtest.phpにアクセスしてuploads.iniが反映されていることを確認しておきましょう。確認が終わったらtest.phpの削除も忘れずに。
VultrでKUSANAGI Runs on Dockerが動くまで(その3)に続きます。