Docker on AWS with Elastic CONTAINER Service and ECR
Step1:
Configuring
of the cluster
#ecs-cli configure
–cluster myCluster –region us-east-1
Step2:
Starting
the cluster
#ecs-cli up
--keypair ubuntu_mum --capability-iam --size 3 --instance-type t2.micro
INFO[0002] Created cluster
cluster=myCluster region=us-east-1
INFO[0003] Waiting for your cluster resources to be
created...
INFO[0004] Cloudformation stack status
stackStatus="CREATE_IN_PROGRESS"
INFO[0066] Cloudformation stack status
stackStatus="CREATE_IN_PROGRESS"
INFO[0129] Cloudformation stack status
stackStatus="CREATE_IN_PROGRESS"
Cluster creation succeeded.
VPC created: vpc-4bd2bd33
Security Group created: sg-11980264
Subnet created: subnet-42fd9526
Subnet created: subnet-51e1457e
|
Step3:
We need to
create a project (anything which is simple to access any application)
Or
Once got
the code from the above github, we need to get the login details of ECR
#aws ecr
get-login --region us-east-1
root@ip-172-31-27-168:/opt/ecsproj/php-docker-apache-example#
aws ecr get-login --region us-east-1
docker
login -u AWS -p eyJwYXlsb2FkIjoiMEtFdXBCeHEyMDBjVnBBallHK3ZJeWdHazhSdnA3endvTFBHTnZhcjJ0ai8za2NOUzlodEdMRGxpc2Y4ckdlVzFhQTJ3RnhpQlZYbzUvSTdwM2xDMHBmQitGSWI3TlQ0d3hJaVFBYzNkbzVxUllUa2I1V3lpMlZUb1RpemFuaWEvY215Mm9sUVBqeVVDaGdxOVB0K1ByellDSHJkWmt2LzczT2JXZ2wwYk9ZSWwrbXpUbjQxK3FsUHM0RkRBVGUzQkgxTFBkZzJ3elFDYWgxRU9xQTVSekU4bjJLRnFhS1BVenpISGlEem5zYVpjZnIvdXd1U3lwZzB0K0cxT09CaWRCZWFOazdLR1NZL2NGcVBlU1k2VVp1ZUlJdk5oVS83M1Z2OGZ3aTdLbHFtYWlkWEVMYVppNlpzYW9LSWVwY1dMQUdtTkdDWHVzSitzVU9pZllmbHhNYThkV3lBZWdrTWVieXhzNS9qSUUwMGd5YmNqOVMxQUsxVXZvSkFvaEx2WlZBZmZ4UXFXRTlseFVXYkwwbFR2VkFESTMwVE9oT01PcWp5OXk1NitReHhWVzc1TmZzSzlUWE9JR29VdFRnWjZMNCs2UVh5ekZDMWcreWNvSzZmZHk1WG9NajRJb2dlT3BMUDRpaUtFdEdJdlZsZ1BvKzNXYnpoZmlybmJEWGRCWUY0R0x1NGREM3VpalEwdzRNaUN6SmdodHNITHkxeStKK1Qra2E0RnNTdVBVdmFRdFFZQTFDRWJIVk9DOHBTZzI0UnVDc084ZUNZbzRiclhkWm1YaUJ4S0UyL21Zb3RrWlZKb0xMaGhtdVAyNEduTk5sNjM3L3VRUERTeWRhYy9IQXRoekhobEVaazNLbGd0TVpQVndIUGlPeDd6dnZVWlhOdEx1RDhlMlRKQ1RzcElEZTUydFVCS1F2RThFWUhwOGtWZGFzU0I5YWNmdHd5dFNWa05NZ0N0WkV0OU81aEpFZ3ZsdmpTUDNOVld1TEFMMjlMUUJkR3l6QVFHcEFYT09NamF0UEJMcTV1N3RFd2xSSTJhU1Z1TGJEQ3hFUHRRYXZpRU95aG9xOXNkS01zNUM4ZXdzVFBWODBXdEFYRnNMN2JyeDlPcHBORzl5TUhBZlhlbERya1hYQ1JFc0F6eWdrYVRJbjg4UTZ1ZC96M0ZnOHl2SHVGSzRKbkVwQ3lBbytxT3pwNjVsSHM1N2JTaDUrOU5uakxlcVZmWTZnS0FDT3piZDVtbzlwMFNXSHdRdk1LZU5pT0o2TCtxODFCSHVvczdsU3dIMDlYeFIvOTI3enVlajh5UTRUSGhrZ1hlTkpEa1lhbEc0bmtGbjIzM3lLemw5V200ekkrL3pPSFBFVytadnM5NnphdmFTem1oakdZeHZTL01GZEl0U1h3ZzcyOURmMnlrRUFERWV3NlFIMXpwTjQ2RVBodnRUaTdDbUZTQTRUcWU5cHBKLzJ4bUVrOCtxeC9ML2xZNktDc010dVdtbnZmIiwiZGF0YWtleSI6IkFRRUJBSGh3bTBZYUlTSmVSdEptNW4xRzZ1cWVla1h1b1hYUGU1VUZjZTlScTgvMTR3QUFBSDR3ZkFZSktvWklodmNOQVFjR29HOHdiUUlCQURCb0Jna3Foa2lHOXcwQkJ3RXdIZ1lKWUlaSUFXVURCQUV1TUJFRURQOFdKWDNZRittTmZLL2JMZ0lCRUlBN04zcVZnSXBQS1ROWkJkUmN3QTJvSE5WK1NVMUVWd3ZkVGxabVlYaHBkTGdadVhseWY0S2UrSWtPdDZoVjBuakdrbjIxb0QrV2VlTjBGdms9IiwidmVyc2lvbiI6IjIiLCJ0eXBlIjoiREFUQV9LRVkiLCJleHBpcmF0aW9uIjoxNTEyMTczMDE5fQ==
https://742226119129.dkr.ecr.us-east-1.amazonaws.com
|
Step4:
Now using
the above login code, need to login.
Step5:
Check for
the repositories
# aws ecr
describe-repositories –region us-east-1
root@ip-172-31-27-168:/opt/ecsproj/php-docker-apache-example#
aws ecr describe-repositories --region us-east-1
{
"repositories": []
}
|
Step6:
Now create
a new repository
# aws ecr
create-repository –repository-name php-simple-app –region us-east-1
root@ip-172-31-27-168:/opt/ecsproj/ecs-demo-php-simple-app#
aws ecr describe-repositories --region us-east-1
{
"repositories": []
}
root@ip-172-31-27-168:/opt/ecsproj/ecs-demo-php-simple-app#
aws ecr create-repository
--repository-name php-simple-app --region us-east-1
{
"repository": {
"registryId":
"742226119129",
"createdAt": 1512134205.0,
"repositoryUri":
"742226119129.dkr.ecr.us-east-1.amazonaws.com/php-simple-app",
"repositoryName":
"php-simple-app",
"repositoryArn":
"arn:aws:ecr:us-east-1:742226119129:repository/php-simple-app"
}
}
|
Step7:
Now We need
to build the docker image using the dockerfile
# docker
build –t php-simple-app .
Step8:
Check the
created docker images
# docker
images
root@ip-172-31-27-168:/opt/ecsproj/php-docker-apache-example#
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php-simple-app latest f9754a166640 47 seconds ago 409MB
|
Step9:
Need to
create a docker tag, to push the same into the AWS ECR
# docker tag php-simple-app
742226119129.dkr.ecr.us-east-1.amazonaws.com/php-simple-app:v1
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
742226119129.dkr.ecr.us-east-1.amazonaws.com/php-simple-app v1 f9754a166640 4 minutes ago 409MB
php-simple-app latest f9754a166640 4 minutes ago 409MB
Step10:
Now, We
need to push the same into ECR
# docker
push 742226119129.dkr.ecr.us-east-1.amazonaws.com/php-simple-app:v1
Step11:
Now we need
to create a docker-compose.yml file for running the servces in ECS using the
created docker image.
root@ip-172-31-27-168:/opt/ecsproj/php-demo#
cat docker-compose.yml
php-demo:
image:
742226119129.dkr.ecr.us-east-1.amazonaws.com/php-simple-app:ssp
cpu_shares: 100
mem_limit: 1342177728
ports:
- "80:80"
entrypoint:
- "/usr/sbin/apache2"
- "-D"
- "FOREGROUND"
|
Note:
In the above
docker-compose file, All the values will be kept as per the ec2 instances
running.
Now run the
docker compose as service
# ecs-cli compose service up
Check the
services status:
# ecs-cli ps
Name State Ports TaskDefinition
95fe2cb7-1394-41b1-adba-ed16fd0e5bba/php-demo
RUNNING 52.90.4.28:80->80/tcp php-demo:2
To Access
the application:
Comments
Post a Comment