Open1
Docker(手動 + compose)でWordPressとMySQL環境構築手順

wordpress + mysql をdocker(コマンド + compose)で環境構築する手順とメモです
環境
pc:MacBook Pro(2019)
os:macos Sequoia
docker:Docker version 20.10.6, build 370c289
docker-compose:Docker Compose version 2.0.0-beta.1
docker desktop 利用
docker-compose.ymlのサンプル構成
docker-compose.yml
services:
mysql:
image: mysql:5.7
container_name: mysqlex01
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress000db
MYSQL_USER: wordpress000kun
MYSQL_PASSWORD: wkunpass
networks:
- wordpressnet01
volumes:
- mysql_data:/var/lib/mysql
wordpress:
image: wordpress
container_name: wordpressex01
depends_on:
- mysql
environment:
WORDPRESS_DB_HOST: mysqlex01
WORDPRESS_DB_NAME: wordpress000db
WORDPRESS_DB_USER: wordpress000kun
WORDPRESS_DB_PASSWORD: wkunpass
ports:
- "8085:80"
networks:
- wordpressnet01
volumes:
mysql_data:
networks:
wordpressnet01:
driver: bridge
docker composeコマンドでの起動方法
起動
docker compose up -d
ブラウザ確認
コンテナ停止+削除
docker compose down
ボリューム削除
docker volume rm wordpressnet01
手動docker runコマンドでの起動方法
ネットワーク作成
docker network create wordpressnet01
MySQLコンテナ作成 + 起動
docker run --name mysqlex01 -dit --net=wordpressnet01 \
-e MYSQL_ROOT_PASSWORD=myrootpass \
-e MYSQL_DATABASE=wordpress000db \
-e MYSQL_USER=wordpress000kun \
-e MYSQL_PASSWORD=wkunpass \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-authentication-plugin=mysql_native_password
- MYSQL_DATABASEを指定しないとDBが作成されない
- 公式イメージは「最初の空状態の時だけ」環境変数で初期化される
- 例: MYSQL_DATABASE指定忘れで作成→コード修正+再作成してもDBは作成されない
- 古いvolumeを削除後に再作成する必要あり
WordPressコンテナ作成 + 起動
docker run --name wordpressex01 -dit --net=wordpressnet01 -p 8085:80 \
-e WORDPRESS_DB_HOST=mysqlex01 \
-e WORDPRESS_DB_NAME=wordpress000db \
-e WORDPRESS_DB_USER=wordpress000kun \
-e WORDPRESS_DB_PASSWORD=wkunpass \
wordpress
MySQL接続・データ確認
コンテナログ確認(mysqlが起動しているのにブラウザでエラーが出ている場合)
docker logs mysqlex01
- 例:→ バージョンに注意、今回はmysql:5.7を利用
unknown variable 'default-authentication-plugin=mysql_native_password'.
コンテナ内MySQL接続
docker exec -it mysqlex01 mysql --default-character-set=utf8mb4 -u wordpress000kun -p
- docker execだけではバイナリなので読めない
- mysqlクライアントで接続して文字コード指定で文字化け対策
- --default-character-set=utf8mb4 はクライアント側設定
- ~/.my.cnf に設定しておけば毎回不要
(DB)データベース確認
SHOW DATABASES;
例:
+--------------------+
| Database |
+--------------------+
| information_schema |
| wordpress000db |
+--------------------+
(DB)投稿確認
WordPress画面で「test」で投稿後に
select id, post_title from wp_posts where post_title="test";
結果例:
+----+--------------+
| id | post_title |
+----+--------------+
| ◯ | test |
+----+--------------+
コンテナ停止+削除
docker stop mysqlex01 wordpressex01
docker rm mysqlex01 wordpressex01
ネットワーク削除
docker network rm wordpressnet01
ボリューム削除
docker volume rm wordpressnet01