Deploying a Docker Image from the GitHub Container Registry
Flightcontrol supports deploying pre-built container images from three different image registries: Docker Hub (opens in a new tab), GitHub Container Registry (opens in a new tab), and the AWS Elastic Container Registry (ECR) (opens in a new tab). This guide will walk you through deploying a Docker image from the GitHub Container Registry.
At this time, Flightcontrol's GitHub Container Registry integration only supports publicly available images. If you would like to see support for private images, please vote for it on our roadmap (opens in a new tab). Otherwise, you can use AWS ECR or Docker Hub for private images in the mean time.
You'll need the following before you begin:
- A public Docker image hosted on GitHub Container Registry
- A GitHub repository (public or private) with your source code
- An AWS account - Create an account (opens in a new tab)
- A Flightcontrol account - Create an account (opens in a new tab)
Let's use our access token to setup an image registry on Flightcontrol. Choose Image Registries from the sidebar in the dashboard.
Click the Add an Image Registry button to add a new image registry.
When you add a new image registry, you'll need to choose the registry type. We'll pick GitHub Container Registry.
The GitHub Registry URI will be in the format similar to the following:
flightcontrol would be the name of the GitHub organization or user account that owns the Docker image.
Now, let's create a Flightcontrol project to deploy the Docker images from the GitHub Container Registry.
Create a new project in the Flightcontrol dashboard and choose a GitHub source code repository to use. You can choose a public or private repository. While Flightcontrol won't use the source code in the repository to produce a build, you can use a
flightcontrol.json file in the repository to configure your project.
For this guide, we'll use the Flightcontrol dashboard to setup our project, instead of configuring with code using
We'll start with an empty project, and add a Web Server service to it.
After the Web Server service is added to your project, you'll need to configure it. The default build type is Nixpacks, so we will need to change the build type to Pull from image registry.
Once we change the build type, a new set of configuration options will appear. Choose the GitHub container registry you created earlier, and enter the name of the Docker image you want to deploy. Typically, you will want to use the
latest tag for your image, but you can use any tag here.
Your web server service also needs a human readable name. You can also change the health check path your service needs - the default is "/". Double check the port number your service is listening on, and then click the Create service button.
You will be taken back to the Project screen, where you can see your new service.
If your project needs any environment variables, you can add them now to the dashboard.
You can also add any auxiliary services your project needs, such as a database or Redis cache.
You can create your project with the Create Project button.
Flightcontrol will pull your Docker image from the GitHub Container Registry, and then deploy it to AWS ECS Fargate.
To put this together into a Continuous Deployment (CD) process, you can use a build pipeline to build, test and push your Docker images to the GitHub Container Registry. After a successful build, you can trigger a deployment with Flightcontrol using a Deploy Hook.
Flightcontrol supports automatically deploying your application when you push a new image to the GitHub Container Registry. To do this, you'll need to create a deploy hook in Flightcontrol, and then trigger the deploy hook when a new image is pushed.
Follow our guide on Automating Docker Deployments to learn how to create a deploy hook and then trigger it from your continuous integration (CI) pipeline.
With Flightcontrol serving as your continuous delivery (CD) platfom, you can deploy your Docker images from GitHub Container Registry to AWS ECS Fargate.
Use the build pipeline you already created to build, test and push your Docker images to the GitHub Container Registry, and then trigger a Flightcontrol deployment with an API call.