【初心者向け】docker-compose.ymlを使ってECSにdeploy
今回の目標はdocker-compose.ymlを使ってとりあえず何かECSで動かす事を目標にします。
次回に自分のイメージで、VPCも変更してデプロイする方向でいきます。
参考
docker windowがインストールされているなら下記のコマンドを実行します。
docker context create ecs [サービス名]
(例)
docker context create ecs myservice
実行すると
・AN existing AWS profile
・AWS secret and token condetials
・AWS enviroment cariables
が選択しで出てくるので、AWSへの接続情報がない場合
「 AWS secret and token condetials 」を選択します。
すでに情報がある場合「 AN existing AWS profile 」を選んで下さい。
IAMユーザーの作成
接続情報が無い場合は、AWSにログインしてIAMユーザーを作成します。
ユーザーを追加で適当な名前で作成して下さい。
ロールは今回はECSにアクセスできるユーザーを作成するので
「AmazonECS_FullAccess」
をユーザーにアタッチします。
作成すると「アクセスキー ID」「シークレットアクセスキー 」を取得できます。
と思ったらダメだったのでとりあえずAdministratorをアタッチしました。確認用なので適切なアクセスを後で付けます。
AWSへの接続情報登録
先ほどに戻り上記で作成したIDとKEYを登録します。
最後にRegionを聞かれるので選択します。
「ap-northeast-1」
を今回は選択します。
作成完了したら
docker context ls
で作成できているか確認します。確認できたら下記コマンドで作成した物に切り替えします。
docker context use myservice
実際にECSにコンテナを立ち上げてみる
下記コマンドでdocker-composeファイルの内容をECSにデプロイします。
docker compose up
今回は参考サイト様のymlをお借りして立ち上げてみます。
version: '3'
services:
db:
image: mysql:8.0
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
wordpress:
image: wordpress:latest
ports:
- 80:80
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
db_data:
立ち上げようとしたら下記のようなエラーがでました。
VPC vpc-ba5f5ddd should have at least 2 associated public subnets in different availability zones
default VPCが選択されているのですが 2つのavality zoneで2つサブネットを作っておかないと立ち上がらないみたいです。
default-public-subnet-1a
default-public-subnet-1c
みたいなのを二つ作成してみます。
作成が完了したら再度「docker compose up」を実行
上記のような物で完了したら
下記コマンドで確認します。
docker compose ps
下記のように表示されました。
実際に
wordp-LoadB-12K85IULNM98N-1065777996.ap-northeast-1.elb.amazonaws.com
にアクセスしてワードプレスのインストール画面が表示されたら成功です。
立ち上げぱなしにするとお金がかかってしまうのでとりあえず
docker compose down
で終了します。
でもこんな簡単にECSにデプロイできるのはすごいです。GKEにデプロイがうまくできるようになるまで1,2週間かかりました。(ALBやドメインの設定やサイドカーパターンの実装もしましたが・・・)
残課題として
・default-vpcから変更
・自分でイメージを作成した物を使用する。
・RDSやS3に接続する等あるので、この次にチャレンジしたいと思います。