2020年7月9日にAWSからこんな発表がありました
Docker と AWS が共同で AWS Fargate 上の Amazon ECS へのアプリケーションのデプロイをサポート
https://aws.amazon.com/jp/about-aws/whats-new/2020/07/docker-and-aws-collaborate-to-help-deploy-applications-to-amazon-ecs-on-aws-fargate/
docker-compose.ymlを使ってAmazonECSのFargateに直接デプロイ出来るようになりました!
早速試してみます。
今回はWordPressをデプロイしてみようと思います。
今回試す方法ではcompose down
したらデータが消えます。
なので試すときは注意してください。
環境
AmazonLinux2
WordPressのymlファイル
docker-compose.yml
は公式ページを参考にします。
version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress ports: - "3306:3306" wordpress: depends_on: - db image: wordpress:latest environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress ports: - "80:80" restart: always volumes: db_data: {}
ECSの設定
ECSのコンソールにアクセスして、クラスターの作成 をクリックします。
クラスターテンプレートはネットワーキングのみを選択します。
名前を適当に入力します
今回はtest-wp
にしました。
この名前はあとで使います。
デプロイ
docker ecsをインストール
公式のDeploying Docker containers on ECSを参考に行っていきます。
まずdocker ecs
を有効にする必要があります。
今回はAmazonLinux2なので、Install the Docker ECS Integration CLI on Linuxを参考にインストールします。
$ curl -LO https://github.com/docker/ecs-plugin/releases/latest/download/docker-ecs-linux-amd64 $ chmod +x docker-ecs-linux-amd64 $ sudo mkdir -p /usr/local/lib/docker/cli-plugins $ sudo mv docker-ecs-linux-amd64 /usr/local/lib/docker/cli-plugins/docker-ecs $ export DOCKER_CLI_EXPERIMENTAL=enabled $ DOCKER_CLI_EXPERIMENTAL=enabled docker help $ cat ~/.docker/config.json { "experimental" : "enabled", "auths" : { "https://index.docker.io/v1/" : { } } } #すごく長いauthsが表示される
下記のコマンドが実行されれば、インストールされています
$ docker help | grep ecs ecs* Docker ECS (Docker Inc., v1.0.0-beta.1) $ docker ecs version Docker ECS plugin v1.0.0-beta.1 (12a47cb)
AWSコンテキストを作成する
docker ecs setup
コマンドを使用して、AWSの情報を読み込ませます
$ docker ecs setup Enter context name: aws ✔ new profile Enter profile name: hoge Enter cluster name: test-wp Enter region: ap-northeast-1 Enter credentials: y Enter AWS Access Key ID: XXXXXXXXXXXXXX Enter AWS Secret Access Key: ****************************************
profile name
は何でも良いです
自分の環境に合わせて入力してください。
cluster name
は先程作成したクラスターの名前を入れます
region
は先程クラスターを作成したリージョンを入力します。
ここでは東京リージョンを入れました。
あとはアクセスキーとシークレットアクセスキーと入力します。
作成アプリケーションを実行する
docker ecs compose
コマンドを使用して、デプロイします。
事前に作成したdocker-compose.yml
と同じディレクトリに移動して、下記コマンドを入力します
$ docker ecs compose up
コマンドを実行するとデプロイが開始されます。
結構時間かかります。
動作確認
デプロイが完了すると、クラスターに以下のように表示されます test-wpをクリックして、詳細を確認します。
この画像の場合は下のWordpressのほうをクリックします
タスクタブのタスクをクリックします
ネットワークの欄にパブリックIPが表示されているので、これをブラウザで確認すればokです。
注意点です。今回の設定だと、$ docker ecs compose down
でコンテナを停止させると、データが消えます。
docker ecs compose up
とdocker ecs compose down
が結構時間かかります。
とくにdown
これはマシンにもよる思います。
今回実行した環境がt2.microだったのも関係あるかもしれません。
プラグインのインストールやテーマの変更などは出来ました。
すぐに作って壊す環境であれば、検証環境などに使うのが良いかもしれませんね