はじめに
version 2のdocker-compose.ymlがググっても見当たらなかったので作りました。
docker >= 1.10, docker-compose >= 1.6 でお試しください。
まっさらなWordpressを構築する
docker-compose.yml
version: "2"
services:
wordpress:
image: wordpress:latest
ports:
- "80:80"
depends_on:
- db
environment:
WORDPRESS_DB_HOST: "db:3306"
networks:
- flat-network
env_file: .env
db:
image: mysql:5.7
volumes:
- "db-data:/var/lib/mysql"
networks:
- flat-network
env_file: .env
volumes:
db-data:
networks:
flat-network:
パスワードなどは別のファイルから読み込むようにしました。
.env
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wp_user
WORDPRESS_DB_PASSWORD=hogehoge
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=wp_user
MYSQL_PASSWORD=hogehoge
この2ファイルを置いた後に下記コマンド実行で、Wordpressのインストール画面までいけます。
docker-compose up
簡単ですね!
インストール済のWordpressを構築する
既にWordpressのダンプデータがあり、それをinstall_wordpress.sql
というファイル名で保存しているとします。
その場合は下記のようになります。db
のvolumes
2行目で、コンテナ作成時に実行されるSQLファイルを指定しています。
docker-compose.yml
version: "2"
services:
wordpress:
image: wordpress:latest
ports:
- "80:80"
depends_on:
- db
environment:
WORDPRESS_DB_HOST: "db:3306"
networks:
- flat-network
env_file: .env
db:
image: mysql:5.7
volumes:
- "db-data:/var/lib/mysql"
- "./install_wordpress.sql:/docker-entrypoint-initdb.d/install_wordpress.sql"
networks:
- flat-network
env_file: .env
volumes:
db-data:
networks:
flat-network:
tips
MySQLコンテナのmysqldump
ちなみに、動作中のMySQLコンテナからdumpを取る場合はこんな感じでいけました。
docker exec -it MySQLコンテナID sh -c 'mysqldump wordpress -u wp_user -pXXXXXXXX 2> /dev/null' > install_wordpress.sql
コンテナの削除について
docker-compose down
としてもvolume
は削除されずデータが永続してしまうので、volume
も含めて削除する時は
docker-compose down -v
とするとよいです。