Building and Pushing Docker images using Github Actions
By Mike Street
We needed to build a Docker image via Github Actions and push to the Package repository to create a public, shareable image.
Add the following in a .github/workflows
folder with a .yml
extension. You'll also need to add the following secrets to the respoitory:
DOCKER_USERNAME
- the username whose token you will be usingDOCKER_TOKEN
-an access token withwrite:packages
permission
Once you have pushed the package, you will need to go to the Packages tab on either the organisation and associate it with the repository. Once that is done, the package appears on the right-hand side of the repository list.
Action YAML Example
This code was copied (and adapted) from the official Github Docs website.
I've added (but left commented out) and example of how to pass in a build argument too.
name: Create and publish a Docker image
on:
push:
branches: ['main']
env:
REGISTRY: ghcr.io
REPO_NAME: $
IMAGE_TAG: latest
jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
# Hack to add an env variable built up of env variables
- name: Set docker image env var
run: |
echo "IMAGE_NAME=$/$:$" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: $
password: $
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
#build-args: |
#"ARG_KEY=VALUE"
push: true
tags: $