#目的
dockerで開発環境を作成する。
その1つのパターンとして、wordpressを起動する。
開発環境にいいよと聞くのだが、実際作成したことがないためイメージがわかない。
そのため、簡単なwordpressを使って開発環境として使えるのか試してみる。
#作成する環境
・wordpress
・mysql5.7
#手順
①docker-compose.ymlファイルを作成
※複数コンテナ起動の指示書
※マウント
・dbデータ→volume作成(永続データ)
・wordpressのソース→バインドマウント(ホストにファイル残すため)
②コンテナを起動
③wordpressにアクセスしてみる。
http://localhost:8000
④wordpressの設定をする。
⑤wordpressで投稿をしてみる。
⑥コンテナを削除再起動して、"⑤"の投稿が残っているか確認
→変更が残っていないと、テスト環境として使えないため
⑦wordpressのphpファイルを変更&コンテナ削除再起動
→変更が残っていないと、テスト環境として使えないため
⑧コンテナの起動停止を自動化する。
※開発時に、batファイルをクリックで環境立ち上げて、
終了時に、batファイルをクリックして環境を落とす。
#各作業抜粋
##①docker-compose.ymlファイルを作成
wordpressとmysqlのコンテナを起動する設定
version: '3.3'
services:
# mysqlコンテナ
db:
image: mysql:5.7 # コンテナイメージ
volumes:
- db_data:/var/lib/mysql
restart: always # 自動起動の有効化
environment: # 環境変数
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wp_db
MYSQL_USER: wp_user
MYSQL_PASSWORD: wp_pass
# wordpressコンテナ
wordpress:
depends_on:
- db #依存関係(dbコンテナ実行後に起動)
image: wordpress:latest # コンテナイメージ
ports:
- "8000:80" # ポートフォワード(ホスト側のポート8000をコンテナのポート80に転送)
restart: always # 自動起動の有効化
environment: # 環境変数
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wp_db
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: wp_pass
volumes:
- ./html:/var/www/html # マウント設定(ホスト内のディレクトリ:マウントコンテナのディレクトリ)※ホスト内のディレクトリはdocker-compose.ymlからの相対パス
# databaseのように永続的なストレージが欲しい場合に必要な設定
# https://docs.docker.com/compose/compose-file/#volume-configuration-reference
volumes:
db_data: {}
※エラーになる場合は、sharedriveを有効にしてください。(マウントで使います)
▼ファイアウォールエラーになる場合の参考はこちら(カスペですが)
https://qiita.com/spiderx_jp/items/fa8d5ffe298759df9e06
##②コンテナを起動
#docker-compose.ymlを配置したディレクトリへ移動
cd C:\Users\micro\desktop\docker\wordpress
#コンテナを起動
docker-compose up -d
##③wordpressにアクセスしてみる。
http://localhost:8000
wordpressの設定画面が表示されました!
#④wordpressの設定をする。
初期設定をし、インストール
ログインすると、管理画面が表示されました。
#⑤wordpressで投稿をしてみる。
サイドメニュー>投稿
入力し、公開するボタンを押す
投稿を表示を押す
#⑥コンテナを削除再起動して、"④"の投稿が残っているか確認
#コンテナ停止&削除
docker-compose down
#コンテナ起動
docker-compose up -d
▼停止後
▼起動後
→コンテナを破棄して、再度起動しても前回変更のDBデータは残っている。
つまり、マウント(volume)が効いている!
#⑦wordpressのphpファイルを変更&コンテナ削除再起動
コンテナ起動時に、マウントしたhtmlディレクトリが作成されている。
※おそらく、ホストにディレクトリがないときは、コンテナからがつっと
ディレクトリがコピーされる。
html/index.phpを変更([index.php add]を追記)
変更が、フロントに反映される。
コンテナ破棄&再度起動。
さぁ、変更が残っているのか?いないのか?どっちなんだい。
残っていいる!('ω')
###★注意
私はここではまりました。。orz
コンテナはエラーメッセージなく起動できているが、
どう考えてもマウントが効いていない状態。。
設定したはずのfirewallの設定が元に戻っていました。。
わかるまで、時間かかったーーーー(=_=)
とりあえず、マウントが効かないときは以下
・sharedriveのReset Credencialを試す。
・ファイヤーウォール穴空いているか確認する。
#⑧コンテナの起動停止を自動化する。
batファイルを作成しておくと、起動停止が楽ちん。
# 対象コンテナのディレクトリへ移動
cd C:\Users\micro\desktop\docker\wordpress
# コンテナを起動
docker-compose up -d
# 対象コンテナのディレクトリへ移動
cd C:\Users\micro\desktop\docker\wordpress
# コンテナを停止
docker-compose down
#参考
・Dockerのマウントについて
https://www.public.ne.jp/2019/02/08/docker-5/
・バインドマウント
https://noumenon-th.net/programming/2019/03/30/docker-v/
・Data Volume Container について [Dockerの永続化]
https://noumenon-th.net/programming/2019/03/23/datavolume/
#最後に
おし、テスト環境らしきものができたのではないでしょうか('ω')
▼重要なこと
・DBデータは、マウント(volume)
※volumeはdocker管理領域のため、直接ファイル操作は推奨されない。
・変更するファイルは、マウント(バインドマウント)
あとは、wordpress以外にも練習がてら試しに作ろうと思います!