Build 2018でWeb App for ContainersのMulti-Containerがプレビューリリースされました。
Multi-container support from Azure App Service
元々単一コンテナーは展開できましたが、composeやk8sのpodをアップロードして、複数コンテナをデプロイできるようです。
早速試してみたいと思います。
環境準備
Web App for Containersを作る
- [コンテナーの構成]を選択すると、[Docker Compose]、[Kubernetes]のタグが増えてます!これまでは[単一コンテナー]しかありませんでした。今回はcomposeで試すので、[Docker Compose]を選択します。
- ここでdocker-compose.ymlをアップロードします。
- 今回はwordpressイメージとmysqlイメージを使ったwordpress環境を構築しようと思います。
docker-compose.ymlを準備する
- こんな感じで作りました。
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
composeファイルの書き方に注意!!
さらっと作りましたーって書いてますが、何度もデプロイに失敗してます。
プレビュー期間だからか、書き方に独特な箇所があります。私がハマったところを挙げていきます。
- 拡張子は.ymlにしましょう。.yamlだと動きません。
- environmentは=ではなく:で繋ぎましょう
NGパターン
MYSQL_USER=wordpress
OKパターン
MYSQL_USER: wordpress
- depends_onは書いてもいいですが、現時点では動作しません。(そのうちサポートするようです)
なので、後続処理(ここではmysql)から先に書いています。 - 今回の例では書いていませんが、commandはリスト形式で書きましょう
NGパターン
command: bundle exec thin -p 3000
OKパターン
command: ["bundle", "exec", "thin", "-p", "3000"]
デプロイする
- [OK]を押して、Web Apps for Containersを作成します。
デプロイされたか確認してみる
デプロイに失敗したら?
docker-compose.ymlを修正して、アップデートし直しましょう。
ただ何回もアップロードやってるとなぜか反応しなくなることがあります・・・
まとめ
プレビューなので残念なところはあるものの、Web AppsとDockerって相性よさそうだなと思いました。
スワップとかも使えそうですし、基盤がApp Serviceなので安心感があります。
システムによってはAKSといったオーケストレーターがいらないパターンもあるのでは?と思います。
リリースが楽しみですね!