ここでは、AWS ECS上にdocker-compose.ymlのコンテナを設置する方法をご紹介します。まず、今回はwordpressが動作するdocker-compose.ymlを用意しました。
まず、簡単に手順を説明すると、AWS ECSの場合、まず、クラスターと呼ばれる箱を定義し、その箱の中にEC2インスタンス群を稼働させます。そのインスタンスには、dockerコンテナー動作しています。その後、docker composeで定義した構成のdockerイメージを設置します。
ecs-cliコマンドのインストールと初期設定
事前の準備として、amazon-ecs-cliを次のようにインストールします。すると、ecs-cliというコマンドでECSを操作できるようになります。
$ brew install amazon-ecs-cli
次に、認証情報を次のコマンドで、登録します。必要なアカウントIDやシークレットきーは予め取得していることを想定しています。
$ ecs-cli configure profile --profile-name profname --access-key xxxxxxxx --secret-key yyyyyyyy
コンテナの設置方法
次に設置するECSを次のように作ります。ただし、このコマンドは実際に設置するためのコマンドではなく、作業PC上でクラスターを定義するためのコマンドです。
$ ecs-cli configure --region ap-northeast-1 --cluster ecs-sample
次に実際にdockerが動作するEC2インスタンスを設置します。ここで、kpnameには、EC2インスタンスへアクセスする時に利用するキーペア名を指定してください。キーペアとは、EC2などでsshアクセスする時に利用する証明書です。わからない場合は、WebコンソールでEC2を選択し、キーペアのタブを選択すると利用可能なキーペアの一覧が現れます。
$ ecs-cli up --keypair kpname --capability-iam --size 1 --instance-type t2.micro
dockerを構成する
次に、Wordpressを構成するためのdocker-composeファイルを、今回は次のように定義しました。
wordpress: image: wordpress:latest mem_limit: 256MB ports: - "80:80" links: - mysql environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: wordpressuser WORDPRESS_DB_PASSWORD: password WORDPRESS_DB_NAME: wordpress mysql: image: mysql:5.7 mem_limit: 256MB environment: MYSQL_DATABASE: wordpress MYSQL_USER: wordpressuser MYSQL_PASSWORD: password MYSQL_RANDOM_ROOT_PASSWORD: '1'
これを、docker-compose.ymlという名前で保存し、次のコマンドを実行して、ECS上のdockerに設置します。
$ ecs-cli compose -f docker-compose.yml up
ここで、エラーが発生しなければ、WebコンソールのEC2で、今回設置したインスタンスのパブリックIPアドレスを調べ、ブラウザでそのURLにアクセスし、次のような画面が表示されるとうまくインストールが完了しています。
ここで、ecs-cli composeの処理が終了してから、実際にアクセスできるようになるまでに、数秒のタイムラグがあります。
また、ecs-cli composeの処理中に、エラーらしきログが出力されない場合でも、「Stopped container…」とプロセスが起動せずに処理が終えていることもあるので、注意しなければなりません。
コンテナを停止する方法
作成したコンテナを停止する場合、次のコマンドでEC2インスタンスを停止できます。
$ ecs-cli down