ココがメイン。とはいえ、dockerなので、結構簡単です。参考HPは公式のdockerイメージより。
wordpress – Official Image | Docker Hub
スクリプトもどきを貼りまして、注意点は下記へ。
mkdir -p ~/docker/wordpress && cd $_
#docker-compose.ymlを作る
cat << EOF > docker-compose.yml
version: "3.7"
services:
wordpress:
image: wordpress #WordPressのイメージ
container_name: wordpress-docker
# ports: # ポートの指定はnginx-proxyでするのでここではしない
# "80:80"
networks:
nginx-proxy-network:
aliases:
- wordpress.example.com
volumes:
- /var/docker/wp/html:/var/www/html #docker_wordpress/html にデータがマウントされる
- /var/docker/wp/config:/usr/local/etc/php/conf.d/upload.ini
environment:
WORDPRESS_DB_HOST: wordpressdb:3306
WORDPRESS_DB_USER: wordpressuser
WORDPRESS_DB_NAME: wordpress-db #WordPressの設定
WORDPRESS_DB_PASSWORD: wordpresspassword #WordPressの設定
VIRTUAL_HOST: example.com # nginx-proxyのホスト設定 ※本番では使用するFQDNなどにする。
LETSENCRYPT_HOST: example.com # Let's Encryptのホスト設定 ※本番では使用するFQDNなどにする。
LETSENCRYPT_EMAIL: xxx@example.com # Let's Encryptのメール設定
LETSENCRYPT_TEST: "true" # Let's Encryptのテストかどうかのフラグ 本番ではfalseにする (指定しない とテスト扱いになる)
CERT_NAME: example.com # ローカルで認証局を立てるときに使う ※本番ではLet's Encryptから直接取得するの でコメントアウトする
#HTTPS_METHOD: noredirect # リダイレクトを無効にする
depends_on:
- mysql
restart: always
mysql:
image: mariadb #MariaDBのイメージ
container_name: wordpressdb
ports:
- "3306:3306" #他のMySQLとポートがバッティングする場合は変える 例) "33060:3306"
networks:
nginx-proxy-network:
aliases:
- wordpress.mqspl.example.com
volumes:
- /var/docker/wp/db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: mysql-root-pw
MYSQL_DATABASE: wordpress-db
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: wordpresspassword
restart: always
networks:
nginx-proxy-network:
external: true
EOF
cat << EOF > /var/docker/wp/config/upload.ini
upload_max_filesize = 100M
post_max_size = 100M
EOF
docker-compose build --no-cache
#cat << EOF > php.ini
#upload_max_filesize = 100M
#post_max_size = 100M
#EOF
#
#docker cp ./php.ini wordpress-docker:/usr/local/etc/php/php.ini
docker-compose up -d
注意点は、
- データベースのポート3306が他のコンテナや、ホストのデータベースと被ることがあるので、その時は変更すること。
- phpの転送量増減が小さいので、php.iniを作ってコンテナの中に入れる。か、バインドマウントボリュームを作ってその中に記載した.confファイルを準備するか。
- wordpressコンテナの待ち受けポートは記載しなくてよい。直接proxyコンテナから通信が80番ポートにダイレクトにやってくるので、docker networkさえ同じにしておけばOK.