使用Docker官方映像和docker-compose创建WordPress环境时遇到的问题
由于尝试在基于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とタイプして読み込む。
总结
可以麻烦你做一个容器,将MySQL和SSL运行在WordPress的镜像中。
其他
当我尝试使用KUSANAGI的docker时,发现容器无法启动,并且当运行的目录路径中含有空格时也无法工作。这真是令人失望,因为它既快速,又可以轻松创建可以运行Drupal和concrete5的环境,非常方便。