LoginSignup
0
1

More than 1 year has passed since last update.

Dockerでofficialのイメージとdocker-compose使ってWordPressの環境作った時にハマったこと

Posted at

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が動く環境も簡単に作れるから便利だから今回は残念だった。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1