Hello World.
docker-composeを使ってコンテナ間の繋がりを定義してみるデモに超速で入門する。
ゼロから書くと不要な時間を要するので、こちらを参考にさせていただいた。
写経する中でポイントを咀嚼していく。
~/dockercompose_test というディレクトリを作成し、
その中で作業する。
docker-compose.yml
構成を記述する設定ファイル。ymlで書く。
ansibleでymlには慣れているので嬉しい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
version: "3" services: db: image: mysql:5.7 #container_name: "mysql57" volumes: - ./db/mysql:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS MYSQL_DATABASE: wordpress_db MYSQL_USER: user MYSQL_PASSWORD: user_pass_Ck6uTvrQ wordpress: image: wordpress:latest #container_name: "wordpress" volumes: - ./wordpress/html:/var/www/html - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini restart: always depends_on: - db ports: - 8080:80 environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wordpress_db WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ |
ルートはservices.
名称の理解がフワフワだが、コンテナをサービスと読んでいることが多いくらいの認識.
配下に db と wordpress が存在する。おなじみの構成を定義している。
db
dbの定義についてパラメタを追っていく.
パラメタ | 値 | 説明 |
---|---|---|
image | mysql57 | pull してくるイメージを書く. mysql57という名前のイメージをpullする. |
volumes | – ./db/mysql:/var/lib/mysql | コンテナ内の/var/lib/mysql を ホストの./db/mysql にマウントする(で良いか?) |
restart | always | 再起動ポリシー(コンテナ終了時に再起動するための仕組み)を設定する.再起動ポリシーを設定しておくことで、Dockerデーモンの起動時やホストOSの起動時に自動的にコンテナを開始できる。 alwaysの他にいくつかあるか今はスキップ. |
environment | MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS MYSQL_DATABASE: wordpress_db MYSQL_USER: user MYSQL_PASSWORD: user_pass_Ck6uTvrQ |
コンテナの環境変数を定義する. 環境変数名はコンテナ依存. |
wordpress
wordpressの定義についてパラメタを追っていく.
パラメタ | 値 | 定義 |
---|---|---|
image | wordpress:latest | pull してくるイメージを書く. wordpressという名前のイメージをpullする. バージョンは最新. |
volumes | ./wordpress/html:/var/www/html ./php/php.ini:/usr/local/etc/php/conf.d/php.ini |
コンテナ内のディレクトリをホストのディレクトリにマウントする.マウント先を定義する. |
restart | always | 再起動ポリシーをalwaysに設定.内容はdbと同じ. |
depends_on | – db | サービスの依存関係を定義する.要は起動する順番を定義する. wordpressのdepends_onにdbを設定することで,wordpressよりも先にdbを起動できる.dbの起動が完了するまで待ってくれるという意味ではない! Control startup and shutdown order in Compose. |
ports | 8080:80 | コンテナの80番をホストの8080にマップする. http://localhost:8080 とかするとコンテナの80番が開く. |
environment | WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wordpress_db WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ |
wordpressコンテナの環境変数を設定する.環境変数はコンテナ依存. |
docker compose up
以下で定義したdocker-compose.ymlに基づいて構築が始まる.
-dはDetachedMode. これによりバックグラウンドで実行される.
1 |
$ docker-compose up -d |
ホストで http://localhost:8080 を開くと以下の通り.
永続化の確認
言語を設定しwordpressのインストールを完了させる.
db(MySQL)に加えられた変更はホストにマウントされたファイルに反映される.
以下により環境を停止した後, 再度upしたとしても,
ホストにマウントされたファイルへの変更が反映され,
インストール済みの状態で立ち上がる.
1 2 |
$ docker-compose down $ docker-compose up -d |
まとめ
docker-compose を使った WordPress環境構築のデモに超速で入門した.
一緒にコンテナを永続化するデモにも入門した.