なにかお手伝いできることがあればご連絡ください。
※Googleフォームが表示されます
ECRにDockerイメージをプッシュして、ECSのクラスターをつくって、EC2にコンテナを起動させる為のメモです。
自分用のメモなのであまり参考にならないと思います。
サンプルファイルをcloneする。
$ git clone https://github.com/aws-samples/ecs-demo-php-simple-app
cloneしたフォルダに移動。
$ cd ecs-demo-php-simple-app
dockerイメージを作成。
$ docker build -t amazon-ecs-sample .
コンテナを起動。
$ docker run -d -p 80:80 --name amazon-ecs-sample amazon-ecs-sample:latest
http://localhost/
でアクセス。
AWSコンソールのECS > ECRから、リポジトリを作成する。
リポジトリが作成されます。
次に「プッシュコマンドの表示」を押します。
プッシュコマンドを順番に実行していく。
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin XXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com
docker build -t amazon-ecs-sample .
docker tag amazon-ecs-sample:latest XXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/amazon-ecs-sample:latest
docker push XXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/amazon-ecs-sample:latest
リポジトリ内にイメージが作成される。
EC2でコンテナを起動させるにはタスクを定義する必要があります。
タスクとは複数のコンテナをグループにしたものです。
docker-compose.ymlに似ている。
起動するコンテナが1つでも複数でも定義が必要になる。
タスクはjsonファイルで登録することができるので、以下のサンプルを利用します。 https://github.com/aws-samples/ecs-demo-php-simple-app/blob/master/simple-app-task-def.json
◎ simple-app-task-def.json
{
"family": "console-sample-app",
"volumes": [
{
"name": "my-vol",
"host": {}
}
],
"containerDefinitions": [
{
"environment": [],
"name": "simple-app",
"image": "{ECRにアップロードしたイメージ}",
"cpu": 10,
"memory": 500,
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
],
"mountPoints": [
{
"sourceVolume": "my-vol",
"containerPath": "/var/www/my-vol"
}
],
"entryPoint": [
"/usr/sbin/apache2",
"-D",
"FOREGROUND"
],
"essential": true
},
{
"name": "busybox",
"image": "busybox",
"cpu": 10,
"memory": 500,
"volumesFrom": [
{
"sourceContainer": "simple-app"
}
],
"entryPoint": [
"sh",
"-c"
],
"command": [
"/bin/sh -c \"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done\""
],
"essential": false
}
]
}
タスクを登録する。
aws ecs register-task-definition --cli-input-json file://simple-app-task-def.json
"family": "console-sample-app"
に定義したconsole-sample-app
というタスクが作成されます。
クラスターとは、タスクを配置するEC2インスタンス群のこと。タスクの実行環境になります。
イメージとしてはこんな感じ(自信なし)??
ECS > クラスターから「クラスターを作成」を押す。
「EC2 Linux + ネットワーキング」を選択して「次のステップ」を押す。
とりあえず以下の設定して「作成」を押す。
項目 | 値 |
---|---|
クラスター名 | sample-cluster |
EC2 インスタンスタイプ | t2.micro |
インスタンス数 | 2 |
キーペア | 作成したもの |
クラスターが作成される。
タブの「タスク」から「新しいタスクの実行」を押す。
以下の設定をして「タスクの実行」を押す。
タスクが実行されインスタンスが作成されます。
インスタンスのパブリックDNSでアクセスしてみると、以下の画面が表示されます。
なにかお手伝いできることがあればご連絡ください。
※Googleフォームが表示されます