#!/bin/bash # usage: ./deploy.sh staging f0478bd7c2f584b41a49405c91a439ce9d944657 BRANCH=$1 SHA1=$2 AWS_ACCOUNT_ID=12345678900 NAME=name-of-service-to-deploy EB_BUCKET=aws-s3-bucket-to-hold-application-versions VERSION=$BRANCH-$SHA1 ZIP=$VERSION.zip aws configure set default.region us-east-1 # Authenticate against our Docker registry eval $(aws ecr get-login) # Build and push the image docker build -t $NAME:$VERSION . docker tag $NAME:$VERSION $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/$NAME:$VERSION docker push $AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/$NAME:$VERSION # Replace the with the real ID sed -i='' "s//$AWS_ACCOUNT_ID/" Dockerrun.aws.json # Replace the with the real name sed -i='' "s//$NAME" Dockerrun.aws.json # Replace the with the real version number sed -i='' "s//$VERSION/" Dockerrun.aws.json # Zip up the Dockerrun file (feel free to zip up an .ebextensions directory with it) zip -r $ZIP Dockerrun.aws.json aws s3 cp $ZIP s3://$EB_BUCKET/$ZIP # Create a new application version with the zipped up Dockerrun file aws elasticbeanstalk create-application-version --application-name $NAME-application \ --version-label $VERSION --source-bundle S3Bucket=$EB_BUCKET,S3Key=$ZIP # Update the environment to use the new application version aws elasticbeanstalk update-environment --environment-name $NAME \ --version-label $VERSION