Join our Discord Server
Ajeet Raina Ajeet Singh Raina is a former Docker Captain, Community Leader and Arm Ambassador. He is a founder of Collabnix blogging site and has authored more than 570+ blogs on Docker, Kubernetes and Cloud-Native Technology. He runs a community Slack of 8900+ members and discord server close to 2200+ members. You can follow him on Twitter(@ajeetsraina).

CI/CD for Docker Using GitHub Actions

2 min read

GitHub Actions is a platform for automating software workflows. It allows you to define and run custom workflows to automate your software development processes. Workflows are composed of one or more jobs, which are composed of one or more steps. GitHub Actions provides a wide range of pre-built actions that you can use in your workflows. These actions can perform tasks such as building and testing code, deploying applications, sending notifications, and more.

Create Your Own Custom Actions

You can also create your own custom actions using the GitHub Actions toolkit. This allows you to define your own workflows that can be reused across different projects. GitHub Actions is tightly integrated with GitHub, which means that you can trigger workflows based on events that occur in your repository, such as pull requests, issue comments, and more.

GitHub Actions is flexible and can be used for a wide range of tasks, from automating builds and deployments to running tests and sending notifications. It is a powerful tool for streamlining your software development processes and increasing productivity.

Is GitHub Actions a CI/CD Platform?

Yes, you’re right. GitHub Actions is a popular CI/CD platform for automating your build, test, and deployment pipeline. Docker provides a set of official GitHub Actions for you to use in your workflows. These official actions are reusable, easy-to-use components for building, annotating, and pushing images.

Does Docker works with GitHub Actions?

Yes, Docker works with GitHub Actions. GitHub Actions is a platform for automating software workflows, including building and deploying Docker containers. You can use GitHub Actions to build Docker images, push them to a Docker registry, and deploy them to a production environment.

GitHub Actions provides a variety of pre-built Docker actions that you can use in your workflows, such as “docker/build-push-action” for building and pushing Docker images and “docker/login-action” for authenticating with a Docker registry.

In addition, you can create your own custom Docker actions using the GitHub Actions toolkit. This allows you to define your own workflows that use Docker to build and deploy your applications. Docker and GitHub Actions work together seamlessly to enable continuous integration and deployment of Docker-based applications.

As per Docker’s official documentation, the following GitHub Actions are available:

  • Build and push Docker images: build and push Docker images with BuildKit.
  • Docker Login: sign in to a Docker registry.
  • Docker Setup Buildx: initiates a BuildKit builder.
  • Docker Metadata action: extracts metadata from Git reference and GitHub events.
  • Docker Setup QEMU: installs QEMU static binaries for multi-arch builds.
  • Docker Buildx Bake: enables using high-level builds with Bake.

Using Docker’s actions provides an easy-to-use interface, while still allowing flexibility for customizing build parameters.

Here is a simple example of how Docker and GitHub Actions can work together:

  • Create a Dockerfile for your application. Here is an example Dockerfile for a simple Node.js application:
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
  • Create a repository on GitHub and commit the Dockerfile and your application code to the repository.

Create a GitHub Actions workflow file in your repository. This workflow will build and push the Docker image to a container registry (in this example, Docker Hub).

name: Build and Push Docker Image

on:
  push:
    branches:
      - main

env:
  DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
  DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ env.DOCKERHUB_USERNAME }}
          password: ${{ env.DOCKERHUB_TOKEN }}
      - name: Build Docker image
        run: |
          docker build -t myapp:latest .
      - name: Push Docker image
        run: |
          docker tag myapp:latest ${{ env.DOCKER_USERNAME }}/myapp:latest
          docker push ${{ env.DOCKER_USERNAME }}/myapp:latest
  • Create Docker Hub credentials and add them as secrets in your GitHub repository. To do this, go to your repository settings and click on Secrets. Then, create two secrets named DOCKERHUB_USERNAME and DOCKERHUB_TOKEN, and enter your Docker Hub username and token respectively.
  • Commit the workflow file to your repository. GitHub Actions will automatically start running the workflow whenever you push changes to the main branch.

This workflow will build a Docker image for your application and push it to Docker Hub. You can then deploy the Docker image to your production environment, either manually or using a separate workflow.

References:

Have Queries? Join https://launchpass.com/collabnix

Ajeet Raina Ajeet Singh Raina is a former Docker Captain, Community Leader and Arm Ambassador. He is a founder of Collabnix blogging site and has authored more than 570+ blogs on Docker, Kubernetes and Cloud-Native Technology. He runs a community Slack of 8900+ members and discord server close to 2200+ members. You can follow him on Twitter(@ajeetsraina).
Join our Discord Server
Index