Le plug-in ECS de Docker a été publié et il semble qu'il prenne également en charge la version stable de Docker pour Mac, alors je l'ai essayé.
Il existe des documents officiels et des sites de commentaires, mais il y a eu des obstacles, alors (Sans le savoir, la commande docker ecs compose a été intégrée dans docker compose ...) Je l'ai résumé comme un mémo personnel pour les débutants ECS.
La version 2 de l'AWS CLI est requise. Nous vous recommandons de mettre à jour Docker et AWS CLI vers la dernière version.
Lien de référence: Paramètres AWS CLI Installation, mise à jour et désinstallation de l'AWS CLI version 2 sur macOS
Cette fois, nous utiliserons Docker Official Sample. Commencez par vérifier le fonctionnement localement. Il est presque écrit dans Official Doc, mais en tant que mémo personnel, il s'agit d'un échantillon officiel de Docker. Je vais vous expliquer la procédure de.
$ git clone https://github.com/docker/ecs-plugin.git
$ cd ecs-plugin/example/
$ docker build app -t example
--Spécifiez une balise et confirmez que l'image a été créée
$ docker images --filter reference=example
REPOSITORY TAG IMAGE ID CREATED SIZE
example latest 33e46b7030e0 4 minutes ago 52.3MB
$ docker run -t -i -p 5000:5000 example
Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Essayez d'accéder à http://0.0.0.0:5000/. Parce que redis ne fonctionne pas redis.exceptions.ConnectionError Devrait se produire. Quittez avec CTRL + C.
Amazon ECR est comme Docker Hub. Poussez l'image Docker créée vers ECR et tirez-la lorsque vous utilisez docker-compose.
python
$ docker context use default
$ docker context ls
Cela crée également un utilisateur IAM selon Official Doc .. Suivez les étapes pour le créer avec le nom «Administrateur». Lorsque vous vous connectez en tant qu'utilisateur IAM que vous avez créé, "Administrator @ aws_account_id" s'affiche dans la barre de navigation. ex. Administrator@1234-5678-9012
Notez les informations d'identification car vous les utiliserez plus tard. aws_account_id aws_access_key_id aws_secret_access_key
Dans mon cas, j'utilise la région de Tokyo (ap-nord-est-1). Entrez le aws_account_id confirmé dans la barre de navigation dans [aws_account_id] sans tirets. ex. 1234-5678-9012 => 123456789012
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin [aws_account_id].dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded
Maintenant que vous avez une image à pousser vers Amazon ECR, créez un référentiel pour la conserver. Créez un référentiel appelé example: latest et transmettez l'exemple d'image que vous venez de créer.
--Créer un référentiel
$ aws ecr create-repository \
--repository-name example \
--image-scanning-configuration scanOnPush=true \
--region ap-northeast-1
$ docker tag example:latest [aws_account_id].dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
--Pousser l'image
$ docker push [aws_account_id].dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
$ aws ecr list-images --repository-name example
Tirez l'image poussée vers ECR et vérifiez l'opération localement. Assurez-vous que vous pouvez pousser l'image vers ERC. Ouvrez la console Amazon ECR (https://console.aws.amazon.com/ecr/). Le référentiel d'exemple doit avoir été créé.
Copiez l'URL. Collez-le dans l'image de docker-compose.yml et docker-compose up. commentez x-aws-pull_credentials car ils ne sont pas nécessaires cette fois.
example/docker-compose.yml
version: "3.8"
services:
frontend:
build: app
# x-aws-pull_credentials: <<<your arn for your secret you can get with docker ecs secret list>>>
image: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/example:latest
ports:
- "5000:5000"
depends_on:
- backend
backend:
image: redis:alpine
$ docker-compose up
Vous pouvez extraire l'image poussée vers ECR afin de pouvoir vérifier le fonctionnement de l'application localement.
J'ai pu confirmer le fonctionnement de redis.
$ docker-compose down
Selon docker docs (translation), créez-le avec le nom myecscontext. Utilisez les informations d'identification créées précédemment dans IAM. aws_access_key_id aws_secret_access_key
$ docker context create ecs myecscontext
? Select AWS Profile new profile
? profile name myecscontext
? Region ap-northeast-1
? Enter credentials Yes
? AWS Access Key ID aws_access_key_id
? Enter AWS Secret Access Key aws_secret_access_key
Successfully created ecs context "myecscontext"
Vérifier le contexte
$ docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
myecscontext ecs ap-northeast-1
Utilisez myecscontext
$ docker context use myecscontext
this tool requires the "new ARN resource ID format"
Il semble que vous deviez activer le format ARN long. Je pense que c'est magique et exécutez-le.
$ aws ecs put-account-setting-default --name awsvpcTrunking --value enabled
$ aws ecs put-account-setting-default --name containerInsights --value enabled
$ aws ecs put-account-setting-default --name containerInstanceLongArnFormat --value enabled
$ aws ecs put-account-setting-default --name serviceLongArnFormat --value enabled
$ aws ecs put-account-setting-default --name taskLongArnFormat --value enabled
C'est finalement ECS, mais c'est fini en un instant. Lorsque le docker se compose, les ressources sont automatiquement créées et déployées.
$ docker compose up
WARN[0000] services.build: unsupported attribute
[+] Running 17/17
⠿ example CREATE_COMPLETE 204.0s
⠿ ExampleLoadBalancer CREATE_COMPLETE 122.0s
⠿ FrontendTCP5000TargetGroup CREATE_COMPLETE 1.0s
⠿ CloudMap CREATE_COMPLETE 51.0s
⠿ FrontendTaskExecutionRole CREATE_COMPLETE 22.0s
⠿ LogGroup CREATE_COMPLETE 3.0s
⠿ ExampleDefaultNetwork CREATE_COMPLETE 8.0s
⠿ Cluster CREATE_COMPLETE 6.0s
⠿ BackendTaskExecutionRole CREATE_COMPLETE 21.0s
⠿ ExampleDefaultNetworkIngress CREATE_COMPLETE 1.0s
⠿ FrontendTaskDefinition CREATE_COMPLETE 3.0s
⠿ BackendTaskDefinition CREATE_COMPLETE 4.0s
⠿ FrontendServiceDiscoveryEntry CREATE_COMPLETE 3.0s
⠿ BackendServiceDiscoveryEntry CREATE_COMPLETE 1.9s
⠿ BackendService CREATE_COMPLETE 68.0s
⠿ FrontendTCP5000Listener CREATE_COMPLETE 1.0s
⠿ FrontendService CREATE_COMPLETE 68.0s
Vérifiez l'état du conteneur en cours d'exécution.
$ docker compose ps
ID NAME REPLICAS PORTS
example-BackendService-xSDWkSABSvEt backend 1/1
example-FrontendService-0pIz1giwUZg4 frontend 1/1 ExampleLoadBalancer-29dbd0f98418a861.elb.ap-northeast-1.amazonaws.com:5000->5000/tcp
Essayez d'accéder aux PORTS frontaux. Je pense que vous avez déployé l'exemple d'application. http://ExampleLoadBalancer-29dbd0f98418a861.elb.ap-northeast-1.amazonaws.com:5000/
Si votre docker compose, la ressource sera supprimée automatiquement.
$ docker compose down
[+] Running 17/17
⠿ example DELETE_COMPLETE 515.0s
⠿ ExampleLoadBalancer DELETE_COMPLETE 389.0s
⠿ FrontendTCP5000TargetGroup DELETE_COMPLETE 389.0s
⠿ CloudMap DELETE_COMPLETE 514.0s
⠿ FrontendTaskExecutionRole DELETE_COMPLETE 393.0s
⠿ LogGroup DELETE_COMPLETE 471.0s
⠿ ExampleDefaultNetwork DELETE_COMPLETE 467.0s
⠿ Cluster DELETE_COMPLETE 467.0s
⠿ BackendTaskExecutionRole DELETE_COMPLETE 472.0s
⠿ ExampleDefaultNetworkIngress DELETE_COMPLETE 3.0s
⠿ FrontendTaskDefinition DELETE_COMPLETE 390.0s
⠿ BackendTaskDefinition DELETE_COMPLETE 467.0s
⠿ FrontendServiceDiscoveryEntry DELETE_COMPLETE 389.0s
⠿ BackendServiceDiscoveryEntry DELETE_COMPLETE 467.0s
⠿ BackendService DELETE_COMPLETE 464.0s
⠿ FrontendTCP5000Listener DELETE_COMPLETE 388.0s
⠿ FrontendService DELETE_COMPLETE 386.0s
Échantillon officiel Docker Déploiement du conteneur Docker dans ECS Comment démarrer Amazon ECR à l'aide de l'AWS CLI Comment démarrer Amazon ECS à l'aide de Fargate La commande docker ecs est née en collaboration avec Docker et AWS, j'ai donc essayé de l'utiliser J'ai essayé le déploiement Amazon ECS de Docker Compose
Recommended Posts