AWS Elastic Container Service CLIチュートリアル1
先週やったAWS ECSのecs-cliでのチュートリアルの続き.
コンテナクラスターの立ち上げ
key-pairを立ち上げるリージョンに作っておく.
$ aws ec2 create-key-pair --key-name ecs-instances-default-cluster --query 'KeyMaterial' --output text > ecskey.pem $ chmod 400 ecskey.pem
当たり前だけど、–keypairオプションには上で作った–key-nameを指定する必要がある.
(地味に間違えたが, .pemを指定するのではない.)
$ ecs-cli up --keypair ecs-instances-default-cluster --capability-iam --size 2 --instance-type t2.medium INFO[0002] Created cluster cluster=ecs-cli-demo region=us-east-2 INFO[0004] Waiting for your cluster resources to be created... INFO[0005] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS" INFO[0068] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS" INFO[0132] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS" INFO[0195] Cloudformation stack status stackStatus="CREATE_IN_PROGRESS"
特にERRORが出ずに終わったらOKな模様.
もし間違えたり、ERRORに途中でなってしまったら, 都度downコマンドを実行しないとダメなようだ.
$ ecs-cli down --force
ここは少しめんどい.
(ERRORでも途中まで立ち上がったものは自動でshutdownされない模様.)
docker-composeの構成
チュートリアルにしたがってdocker-compose.ymlみたいなのを作る.
docker-composeに慣れている人ならだいたいわかる.
今回はwordpressとmySQLのコンテナをリンクして立てる.
いろんな環境変数やマシンリソースを指定することも出来て,
docker-composeは便利.
hello-world.ymlとしてlocalに以下を保存.
version: '2' services: wordpress: image: wordpress cpu_shares: 100 mem_limit: 524288000 ports: - "80:80" links: - mysql mysql: image: mysql cpu_shares: 100 mem_limit: 524288000 environment: MYSQL_ROOT_PASSWORD: password
クラスターに上記をデプロイする.
docker-compose.ymlという名前だった場合は–fileオプションは省略可能.
この辺りもdocker-composeと同じだ.
$ ecs-cli compose --file hello-world.yml up INFO[0002] Using ECS task definition TaskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0002] Starting container... container="2e0241f0-ac16-444f-8fda-82980689cc04/wordpress" INFO[0002] Starting container... container="2e0241f0-ac16-444f-8fda-82980689cc04/mysql" INFO[0002] Describe ECS container status container="2e0241f0-ac16-444f-8fda-82980689cc04/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0002] Describe ECS container status container="2e0241f0-ac16-444f-8fda-82980689cc04/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0015] Describe ECS container status container="2e0241f0-ac16-444f-8fda-82980689cc04/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0015] Describe ECS container status container="2e0241f0-ac16-444f-8fda-82980689cc04/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0027] Describe ECS container status container="2e0241f0-ac16-444f-8fda-82980689cc04/wordpress" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0027] Describe ECS container status container="2e0241f0-ac16-444f-8fda-82980689cc04/mysql" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0040] Started container... container="2e0241f0-ac16-444f-8fda-82980689cc04/wordpress" desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecscompose-ecs-demo-php-simple-app:1" INFO[0040] Started container... container="2e0241f0-ac16-444f-8fda-82980689cc04/mysql" desiredStatus=RUNNING lastStatus=RUNNING taskDefinition="ecscompose-ecs-demo-php-simple-app:1"
立ち上がったコンテナクラスターの確認もdocker-composeと同様.
ちゃんとport 80でwordpressが立ち上がっていて, mySQLも同時に立ち上がってることがわかる.
$ ecs-cli ps Name State Ports TaskDefinition 2e0241f0-ac16-444f-8fda-82980689cc04/wordpress RUNNING 13.59.57.80:80->80/tcp ecscompose-ecs-demo-php-simple-app:1 2e0241f0-ac16-444f-8fda-82980689cc04/mysql RUNNING ecscompose-ecs-demo-php-simple-app:1
時間がきたのでコンテナを落として終了.
$ ecs-cli down --force
docker-composeと同じでかなり便利!
先にクラスターを立ち上げておいて後からcompose upするという流れなのな.