0%

Salt with Docker - Part2: WordPressインストール

SLSで構築したminionのDockerに、Docker Statesモジュールを使いWordPressコンテナを作成してみます。

Saltには組み込みのStateモジュールたくさんあるので多くのことができますが、DockerでCMツールをどこまで使うべきなのか見極めが問題です。

tutum/wordpress-stackableのイメージ

DockerイメージはTutumtutum/wordpress-stackableを使います。WordPressとMySQLが別コンテナなので、MySQLはtutum/mysql:5.5を使います。

WordPressコンテナのSLS

WordPressをインストールするためのSLSを作成します。SLSはYAML形式でFigっぽく書けます。
WordPressコンテナの起動前にMySQLコンテナが起動している必要があるため、statesのrequire_inがちょっと複雑になります。

/srv/salt/wordpress/init.sls
mysql-image:
docker.pulled:
- name: tutum/mysql:5.5
- require_in: mysql-container

mysql-container:
docker.installed:
- name: db
- image: tutum/mysql:5.5
- environment:
- "MYSQL_PASS": "password"
- require_in: mysql

mysql:
docker.running:
- container: db
- port_bindings:
"3360/tcp":
HostIp: ""
HostPort: "3360"
- require_in: wordpress

wordpress-image:
docker.pulled:
- name: tutum/wordpress-stackable
- require_in: wordpress-container

wordpress-container:
docker.installed:
- name: wordpress
- image: tutum/wordpress-stackable
- environment:
- "DB_PASS": "password"
- require_in: wordpress

wordpress:
docker.running:
- container: wordpress
- links:
db: db
- port_bindings:
"80/tcp":
HostIp: ""
HostPort: "80"

Statesの実行

highstateでなく、作成したWordPressのStatesを指定してminion-wpに実行します。

$ sudo salt 'minion-wp*' state.sls wordpress -v
...
Summary
------------
Succeeded: 6
Failed: 0
------------
Total: 6

Figの場合

tutum/wordpress-stackableには、Figの設定ファイルも用意されています。SLSよりもシンプルにまとまります。

fig.yml
wordpress:
build: .
links:
- db
ports:
- "80:80"
environment:
DB_NAME: wordpress
DB_USER: admin
DB_PASS: "**ChangeMe**"
DB_HOST: "**LinkMe**"
DB_PORT: "**LinkMe**"
db:
image: tutum/mysql:5.5
environment:
MYSQL_PASS: "**ChangeMe**"

確認

minionのノードをブラウザから開いて確認します。WordPressのインストール画面が表示されました。