きっかけ
もともと仕事でdocker-composeを使っていたけど、誰かの作った設定を「こういうコマンドで使ってね」という感じだった。
ふと思い立ち、Wordpressを新たに作ろう/grafanaも立てたい/node-redとかも必要かもとなった。
初めはせっかくHyper-V使えるんだから、Hyper-V上の1イメージに作ればいいかとか思ったけど、ネットワーク的におかしい。
(githubのhttpsアクセスが拒否られる……)
もう解決策も分らんくなったのであきらめた。
docker-composeは、使いたいアプリ/システムをダウンロードして使えるんやでってことはなんとなく知ってたので、「じゃぁdocker-composeでやってみるか」となった。
相変わらず深くまでちゃんと分かっているわけではないが、参考にした情報をメモしておく。
WindowsにDockerのインストール
- ググってDocker-for-Windowsにたどり着いてインストーラーでインストール
- 前はHyper-V上に構成してたので、Win10 ProとHomeではインストール手順が違っていたはずだが、今はWSLを使う(パフォーマンスもこっちの方が良いらしい)っぽいのでHomeでも同じかもしれない
- Hyper-V・・・もう要らんか・・・?
- WSLが入っていないとインストール後にDocker-Desktopの設定の時に「WSLをインストールするまで動かへんで」と言ってくるので、ダイアログに従ってWSLをインストールする
docker-compose.ymlを作成する
とりあえず、docker-compose.ymlを書けば、ダウンロードしてきてビルドされることは知っていたので書こうとする。
が、何を書いていいのかわからない。
参考しにした情報
- docker-composeにWordpressを入れる書き方
- https://docs.docker.jp/compose/wordpress.html
- コピペで良い
- 設定の内容は読むとなんとなくわかる
docker起動
Power Shell を管理者権限で起動して
> docker-compose up -d
これは仕事で使っているので知っている。
docker落とす
Power Shell を管理者権限で起動して
> docker-compose down
ボリューム(設定とかが記憶されているところ。DBにボリュームの指定が無いと、dockerを落とすたびにデータが消される)ごと落とす場合は
> docker-compose down -v
そして、Wordpressの言語設定が保存されないことに気づく。
volumesの設定について
先述のWordpressの指定は以下の通り。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
「あーdbのvolumesのdb_dataが、volumesのdb_dataに紐づいて保存されるんだな」と理解。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
- wordpress_html:/var/www/html
volumes:
db_data:
wordpress_html:
上記の指定は、ボリュームのパスがwindowsのパスからは分かりづらい指定。
参考にしたサイトでは
wordpress:
volumes:
- ./wordpress/html:/var/www/html
とだけ指定して、wordpressと同レベルのvolumesは使っていない。
これは、指定したパスにボリュームの共有ディレクトリを作るか、Dockerが自動的にどっかにボリュームを作ってくれるのを信用するか違いだと思い込んでる。
(上記をしていたら何回かやっているうちに、DBにアクセスできなくなったのでやめた。。多分ディレクトリ内のファイルが壊れたりなんかしたのだろう・・・)
参考しにした情報
- wordpressのvolumesに設定するべきパス
- volumes指定に関する説明
- volumesに関するリファレンス
その後、grafanaやらを組み込んだ時に参考にしたもの
- DBを複数使う方法
- grafanaをdocker-composeに設定する方法
- https://qiita.com/__Rayleigh__/items/4da75f467cab385d1006
- GrafanaCloud以外のプラグインを使いたかったので、こっちはトップレベルのvolumesを使わない
所感
Hyper-VではWordpressの1環境作るのにhttpsが通らないと何日も詰まっていたのに、docker-composeでは4コンテナを2時間で作れた。
これはdocker-composeに惚れてまう。