Apple silicon (M1)macのDocker DesktopとDockerのオフィシャルのWordPressイメージ使ってローカルの開発環境構築しようとしたらめっちゃハマったのでメモ
docker-compose.yml
参考までに今回使ったdocker-compose.yml
version: "3"
networks:
backend:
driver: bridge
volumes:
db_data:
driver: local
services:
db:
image: arm64v8/mariadb
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
ports:
- 13306:3306
networks:
- backend
wp:
depends_on:
- db
image: wordpress:latest
volumes:
- ./:/var/www/html
networks:
- backend
ports:
- 8000:80
- 4430:443
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- ./:/var/www/html
ここで./
(docker-compose.ymlがあるディレクトリ)をDocumentRootにしてる。
あとからmysqlのユーザ名とか変えると再ビルドが必要
再ビルドしなくてもDB側で変更したユーザを追加すれば良いんだけど、面倒だった。
面倒なのでステージングと同じユーザ名使おうとしたのがいけなかった。ローカルとは環境変数分けよう。
ドキュメントルートにphp.ini
とかあると読み込まれる。
php.iniは必要に応じて消しておく。
https(SSL)でアクセスできない
デフォルトだとそもそもSSLが有効になっていない
/etc/apache2/conf-enable
/etc/apache2/site-enable
あたりを見るとわかる。
自己証明書を作る
こちらを参考に証明書を/etc/ssl/private
に作る
ssl-cert packageは使えなくなってた
SSL moduleを有効化する
# cd /etc/apache2/mods-enabled
# a2enmod ssl
apache 再起動
# service apache2 restart
default-sslを有効化する
# cd /etc/apache2/sites-enabled
# a2ensite
Your choices are: 000-default default-ssl
Which site(s) do you want to enable (wildcards ok)?
*
Site 000-default already enabled
Enabling site default-ssl.
To activate the new configuration, you need to run:
service apache2 reload
作成したオレオレ証明書に合わせてdefault-sslを編集する
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/private/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
apache リロード
# service apache2 reload
chromeでアクセス
不正な通信とかいわれるので、thisisunsafe
とタイプして読み込む。
まとめ
面倒なんで誰か1個のコンテナでMySQLもSSLも動くWordPressのイメージ作ってくれ。
その他
KUSANAGIのdocker使おうとしたら、コンテナいっぱい立ち上がるし、動かすディレクトリのパスにスペース入ってると動かなかった。
これ速いし、Drupalやconcrete5が動く環境も簡単に作れるから便利だから今回は残念だった。