【初心者向け】docker-compose.ymlを使ってECSにdeploy

未分類


今回の目標はdocker-compose.ymlを使ってとりあえず何かECSで動かす事を目標にします。
次回に自分のイメージで、VPCも変更してデプロイする方向でいきます。

参考

https://zenn.dev/thr3a/articles/b71b16c88387d2

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に接続する等あるので、この次にチャレンジしたいと思います。