
Docker で WordPress を動かす
こんな記事を読まなくてもこれを読めばよい。
https://github.com/docker/awesome-compose/tree/master/official-documentation-samples/wordpress/
目次
手順(覚え書)
適当にリポジトリから compose ファイルを引っ張ってくる。
https://github.com/docker/awesome-compose/tree/master/wordpress-mysql
適当にdocker-compose.yml
をいじる。volume
セクションを利用するとデータをその中に保存してコンテナ自体を永続化してくれる。
vim docker-compose.yml
docker-compose.yml
か compose.yml
があるディレクトリで docker compose up -d
する。-d
はデタッチモードの意味。
docker compose up -d
[+] Running 4/4
- Network wp-docker-221231_default Created 0.0s
- Volume "wp-docker-221231_db_data" Created 0.0s
- Container wp-docker-221231-wordpress-1 Started 0.9s
- Container wp-docker-221231-db-1 Started 0.9s
この *.yml に書いてあるイメージファイルを引っ張ってきてよしなにやってくれるらしい。
php.ini の変更
まず以下コマンドでコンテナの中に入る。abb0c49be13e
はコンテナの識別名。
docker exec -it abb0c49be13e /bin/bash
入ったら、/usr/local/etc/php/ 以下にある php.ini のひな型をコピーして編集する。
ls /var/www/html
index.php wp-admin wp-config-sample.php wp-includes wp-mail.php xmlrpc.php
license.txt wp-blog-header.php wp-config.php wp-links-opml.php wp-settings.php
readme.html wp-comments-post.php wp-content wp-load.php wp-signup.php
wp-activate.php wp-config-docker.php wp-cron.php wp-login.php wp-trackback.php
cd /usr/local/etc/php
ls /usr/local/etc/php
conf.d php.ini-development php.ini-production
cp php.ini-production php.ini
vim php.ini # post_max_size やら upload_max_size を変更
apachectl restart # 編集し終わったら、再起動する
コンテナの名前を調べる
docker container ls
を利用する。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67a2c43d7f90 mariadb:10.6.4-focal "docker-entrypoint.s…" 5 hours ago Up 5 hours 3306/tcp, 33060/tcp wp-docker-221231-db-1
abb0c49be13e wordpress:latest "docker-entrypoint.s…" 5 hours ago Up 5 hours 0.0.0.0:80->80/tcp wp-docker-221231-wordpress-1
動作中のコンテナの名前を調べる
docker stats
を利用する。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
67a2c43d7f90 wp-docker-221231-db-1 0.01% 92.66MiB / 15.58GiB 0.58% イチコロ
操作など
docker compose stop
でコンテナを削除せずに止めるdocker compose start
すればまた動くdocker compose down
でデータベースは消さずにcompose.yml
のservices:
セクションの部分(コンテナと既存のネットワーク)を削除- ネットワーク設定などをリセットしたいときに便利
- https://docs.docker.com/engine/reference/commandline/compose_down/
docker compose down --volumes
でデータベースを含むすべてを削除-v
オプションはcompose.yml
のvolumes:
セクションで宣言されたボリュームも削除することを意味する- 永続化したコンテナもこれでイチコロ❤
- マウントしているディレクトリは消えないみたい
WordPress のデータベースを取り込む
これまで、WordPress やデータベースのファイルをボリュームで管理する代わりに、リモートのディレクトリへローカルのディレクトリをマウントさせるような形で運用していたが、Windows と WSL 間ではやはりパフォーマンスの差が大きいのだろうか、サーバー側からの応答が異常に遅いことが問題だった。ということで theme/
および uploads/
ディレクトリのみをローカルに残し、全てをより性能が出るボリュームで管理することにした。今回の場合は、あらかじめ SQL をエクスポートした状態で作業に臨む形だ。
ローカルにあるバックアップ済みの SQL ファイルを特定のコンテナに持ち込むために、コピーする。0b98480cfc73 はコンテナのID。
docker cp .\db\wordpress_db.sql 0b98480cfc73:/tmp/wordpress_db.sql
mysql
コマンドを使って SQL をインポートする。その際-u root
で指定したユーザーのパスワードを問われるので、入力する。
docker exec -it yokkincom-db-1 /bin/bash
mysql -u root -p wordpress_db < /tmp/wordpress_db.sql
Enter password: