ECSがざっくりわかる
ECSとは?
- Dockerコンテナ実行環境を提供
- これまではEC2上にDockerを載せる必要があった(これは前の会社でやってた)
- EC2インスタンス上で実行されるコンテナのことを「Task」、EC2インスタンスのことを「Cluster」と呼ぶ
構成要素
- クラスタ
- サービス
- タスク
- コンテナ
タスク定義(ここめっちゃ詰まる)
- コンテナの設計書(コンテナイメージや実行ロールを設定する)
- それを
register-task-definition
で登録することが可能
{ "family": "{{TASK_NAME}}-task", "containerDefinitions": [ // コンテナの設定(docker-compose.yml的なイメージ) { "name": "{{TASK_NAME}}", // コンテナ名 "image": "dkr.ecr.ap-northeast-1.amazonaws.com/", // コンテナイメージ "cpu": 0, "essential": true, "environment": [ // 環境変数 {"name": "MYSQL_HOST", "value": "{{MYSQL_HOST}}"}, ], "logConfiguration": { // ログ設定 "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/{{TASK_NAME}}-task", } } } ], "taskRoleArn": "arn:aws:iam::role", // IAMロール "executionRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskExecutionRole", "networkMode": "awsvpc", "cpu": "{{ECS_CPU}}", "memory": "{{ECS_TASK_MEMORY}}" }
ECRにイメージを登録するまでの流れ(AWS CLIを想定)
ECR = AWSが提供するコンテナレジストリ(コンテナイメージを保存および配布するための中心的な場所)
# リポジトリの作成 aws ecr create-repository --repository-name ${REPOSITORY_NAME} --region ${AWS_REGION} # リポジトリの詳細確認 aws ecr describe-repositories --region ${AWS_REGION} # レジストリに対して Docker クライアントを認証 aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com ※ $(aws ecr get-login --region ${AWS_REGION} --no-include-email)だと一発でdocker loginまでやってくれる # Dockerfileをビルドしてイメージを作成 docker build -t ${REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${REPOSITORY_NAME}:v1.0 . # イメージをECRにPUSH docker push ${REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${REPOSITORY_NAME}:v1.0 # イメージの確認 aws ecr list-images --repository-name ${REPOSITORY_NAME} --region ${AWS_REGION}
AWS CLIを使ってECRにDockerイメージを登録する | DevelopersIO