Knowledge Base

お知らせや身辺のことを綴っています。

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.ymlcompose.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%     イチコロ

操作など

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: