Docker and ECR Login
Workflow:
Through AWS CLI push docker image to ECR.
Disclaimer: Encountered to various silly errors but it only helped to think better. Moreover dont hop around doubts/topics and fall into loop, stick to one, solve it and if it is consuming unneccessary time write down the problem statement keep it aside and move on. When the fantastic brain is rechharged begin asking in community channels try talking it out with yourself/someone to have better analysis.
Happy Learning :)
CLI:
-
Creating repo
aws ecr create-repository --repository-name <repo_name> --region <region> --profile <profile_name>
-
Building docker image
I have simple java application that says
Hello, world!
As known Dockerfile is written to dockerize it.-f
used to point my Dockerfile where it is located through path provided.-t
to tag the image with image name provided.docker build -f ./Dockerfile -t <image_name> .
-
Check if image is created with correct tag
docker images --filter reference=<image_name>
-
Tagging the image with repositoryuri provide while creating a repo.
Without being tagged by repositoryuri it wont be able to push push into desired repo created.
docker tag <image_name> <repository_uri>/<repo_name>
-
Command to get the docker login authentication for your ECR registry.
Edit the ecr_login_pass.txt by keeping just the auth token and removing the rest. Why am I doing this just to avoide clumsyness on my terminal and prevent the password from ending up in the shell’s history, or log-files. Try cheking in shell history and logfiles.
But this doesn't solve the issue of
WARNING! Your password will be stored unencrypted in ~/.docker/config.json.
which I have covered in post - docker credential store - ECR
aws ecr get-login --no-include-email --region <region> --profile <profile_name> > ecr_login_pass.txt
-
Docker login
Provide the endpont and input the pass from the text file created.
why endpoint? because when we run
docker login
by default it is pointing to docker hub repo which in our case we dont want that !cat ecr_login_pass.txt | docker login --username AWS --password-stdin <your_aws_ECR_account_url>
-
Push docker image to ECR and play around little bit with other comands.
docker push <your_aws_ECR_account_url>/<repo_name>
-
Deleteing
aws ecr delete-repository --repository-name <repo_name> --region <region> --force
-
Logout
docker logout <your_aws_ECR_account_url>
Github link will be posted shortly