使用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的环境,非常方便。

bannerAds