Why spend a ridiculous amount of time and resources trying to set up & manage your infrastructure when you can rely on Aptible to do it for you? Use these three steps to deploy a Docker image from your AWS ECR private repository to Aptible. What is Aptible? Aptible is a platform as a service that provides a scalable environment for deploying applications. In this environment, Aptible delivers development teams infrastructure tools such as storage, servers, load balancers, security & compliance, and more. These tools allow development teams to focus on writing code and deploying applications rather than managing infrastructure. Companies can save money and all the resources needed to set up and manage their infrastructure by relying on Aptible. Aptible offers a pay-as-you-go pricing model, allowing companies to only pay for the resources they use. It also gives a free one-month trial to development teams testing the platform for the first time. Using Aptible, you can deploy any application via the user-friendly Aptible dashboard. It also allows other deployment options, including Infrastructure as Code via Terraform and the Aptible CLI. All these platforms ensure that developers can deploy applications in the most comfortable manner. How to deploy a Docker image from AWS ECR to Aptible Project Overview For this project, we'll use a word counter application that counts the number of words in a sentence. This application will be packaged into a Docker image and deployed to a private AWS ECR repository. We'll then deploy this Docker image to Aptible using the Aptible CLI. JavaScript From this overview, we can see that there are three main steps to complete this project: Build a Docker image and push it to AWS ECR Authenticate AWS ECR with Aptible Deploy to Aptible Step 1: Step 2: Step 3: Prerequisites Before you begin this project, you'll need to have the following: An AWS account. If you don't have one, you can create one on the official AWS website. The is installed and configured with your AWS account. Make sure the AWS CLI has appropriate permissions to access AWS ECR. AWS CLI An Aptible account. If you don't have one, sign up on the . Aptible website The Aptible CLI. You can install it using the . Aptible CLI documentation Docker. You can install it . here Once you have created the following accounts and installed the necessary tools, you can begin with step one of this project. Step 1: Build a Docker image and push it to AWS ECR We'll package a JavaScript word counter application into a Docker image for this step. After that, we'll push this Docker image to a private AWS ECR repository. To build the Docker image, follow these steps: Clone the word counter application: $ git clone https://github.com/Aahil13/Word-counter.git Navigate to the word counter application directory: $ cd Word-counter You'll find all the files and folders for this application in this directory. Part of these files is a containing instructions for building the image. Dockerfile From the , build the Docker image: Dockerfile $ docker build -t word-counter . Verify that the Docker image was built: $ docker images --filter reference=word-counter You should see the following output: REPOSITORY TAG IMAGE ID CREATED SIZE word-counter latest c3d724e0a19e 12 seconds ago 60MB You can view the application locally using the following command: $ docker run -p 80:80 word-counter Navigate to your browser and point to the URL: . http://localhost:80 On your browser, you see the word counter application: To stop the application, press . CTRL+C With this, we have built the Docker image. Now, you'll push this Docker image to a private AWS ECR repository. To push the Docker image to AWS ECR, follow these steps: Using the AWS CLI, log in to AWS ECR: $ aws ecr get-login-password --region <REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com Replace with your AWS account ID and with the AWS region you want to use. <AWS_ACCOUNT_ID> <REGION> Create the private AWS ECR repository: aws ecr create-repository \ --repository-name word-counter \ --image-scanning-configuration scanOnPush=true \ --region region Tag the Docker image: $ docker tag word-counter:latest <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/word-counter Push the Docker image to AWS ECR: $ docker push <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/word-counter You should see the following output: Using default tag: latest The push refers to repository [<AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/word-counter] 0342869436ee: Pushed c1f569e0c435: Pushed 29c9ccae1ae2: Pushed 53bd9605a443: Pushed c140f535da0a: Pushed aba51e9dc8b1: Pushed cc2447e1835a: Pushed With this, you have pushed the Docker image to AWS ECR. Now, we'll move on to step two of this project. Step 2: Authenticate AWS ECR with Aptible In this step, we'll authenticate the AWS ECR repository with Aptible. This authentication will give Aptible access to pull the Docker image from the AWS ECR repository. To authenticate the AWS ECR repository with Aptible, follow these steps: Login to Aptible from the CLI: $ aptible login You should see the following output: Email: <EMAIL> Password: Logged in as <EMAIL> Authenticate the AWS ECR repository with Aptible. : In this step, we'll run the same command in Step 1 to log in to AWS ECR. However, the ECR Docker login password will be stored in a variable. This variable will then authenticate the AWS ECR repository with Aptible. Note $ ECR_PASSWORD=$(aws ecr get-login-password --region <REGION>) Replace with the AWS region you want to use. This command will store the ECR Docker login password in the variable. <REGION> ECR_PASSWORD $ echo -n "$ECR_PASSWORD" | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com Replace with your AWS account ID and with the AWS region you want to use. This command will authenticate the AWS ECR repository with Aptible. <AWS_ACCOUNT_ID> <REGION> : We had to re-authenticate the AWS ECR repository with Aptible because the ECR Docker login password is necessary to deploy an application to Aptible. In Step 1, the password was passed using the flag. This flag ensures that the ECR Docker login password is not stored in the shell history. However, this flag is not supported by Aptible. Therefore, we had to re-authenticate the AWS ECR repository with Aptible, saving the ECR Docker login password in a variable. Note --password-stdin With this, we have authenticated the AWS ECR repository with Aptible. Now, we'll move on to step three of this project. Step 3: Deploy to Aptible This project's final step is deploying the Docker image to Aptible. To do this, we'll be using a single Aptible CLI command. Before executing the command, navigate to the Aptible Dashboard and create an app. You can do this by following these steps: Navigate to the Aptible Dashboard. In the Environments section, select the environment you want to use. Navigate to the Apps tab and click on the New App button. Enter the app name and click on the Create App button. After creating the app, you can deploy the Docker image to Aptible. To deploy the Docker image to Aptible, execute the command below: $ aptible deploy --app "<APP_NAME>" --docker-image "<AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/word-counter" --private-registry-username "AWS" --private-registry-password "$ECR_PASSWORD" Replace with your AWS account ID, with the AWS region you want to use, and with the name of the app you created in the Aptible Dashboard. <AWS_ACCOUNT_ID> <REGION> <APP_NAME> You should see the following output: Hurrah! You have successfully deployed the Docker image to Aptible. You can now view the application on Aptible. Navigate to the Aptible Dashboard and select the app you created. You should see the following output: Although we have finished the deployment, we can't access the application yet. To access the application on your browser, you must create an endpoint. To create an endpoint, follow these steps: On the Apps section, select the app and switch to the Endpoints tab below. word-count Click on the New Endpoint button. Select the configurations as shown below: Click on the Save Endpoint button. It will take a few minutes for the endpoint to be provisioned. Once the endpoint is created, you can access the application using the endpoint URL. From the output, you can see that Aptible provisions a secure endpoint for the application. This endpoint is secured using a TLS certificate from Let's Encrypt. Aptible also provisions a load balancer for the application. This load balancer ensures that the application is highly available. : At the time of this writing, Aptible supports the creation of only one endpoint for a free tier account. If you want to create more endpoints, you must upgrade your account. Note Conclusion As displayed throughout this project, Aptible is an excellent platform for deploying applications. Aptible provided all the infrastructure tools needed for deploying the word counter application. Eliminating the need to set up and manage infrastructure. This hands-on project taught you how to deploy a Docker image from AWS ECR to Aptible. You can now deploy any application from AWS ECR to Aptible using the steps outlined in this project. To learn more about Aptible’s services, you can check out the . Aptible documentation More resources: Using Amazon ECR with the AWS CLI Direct Docker image deployment