Skip to content

Update: Docker Image

Wilbur Ince edited this page Dec 29, 2024 · 5 revisions

Update Official Backdrop CMS Docker Image

Backdrop CMS images are hosted at Docker Hub .

This document describes the process of creating a new image, which happens whenever we have a new release of Backdrop CMS.

  • The process uses an intermediary repository Backdrop Docker, that assembles all the details about the new release.
  • We create a pull request at the Docker library Repository.
  • When the Docker Library pull request is merged, the image is created from the details at Backdrop Docker, and posted at Docker Hub.
  • After the new image is posted, we test the newly created image to confirm it is working as intended.
  1. Update the Backdrop Docker repository
  2. Create a PR to update the Docker repository

1. Update the Backdrop Docker Image

  • File an issue in the Backdrop Docker issue queue to track the work on this update.

You will need 2 things:

  1. The release tag of the latest stable Backdrop CMS version (which is usually the same as the Backdrop version).
  2. The md5 hash of the latest stable Backdrop CMS release:
    • 2.1 Download the "Source code" .tar.gz file - NOT the .zip file (it is usually the last item in the list of links bellow the "Assets" section).
    • 2.1 Run md5 {filename}.tar.gz or md5sum {filename}.tar.gz depending on your operating system
    • 2.2 Make a note of the generated md5 hash
  • Update the 2 dockerfiles:
    • Update 1/apache/Dockerfile:
      • Update ENV BACKDROP_VERSION to the new release tag (point 1 above)
      • Update ENV BACKDROP_MD5 to the new md5 hash (point 2.2 above)
    • Update 1/fpm/Dockerfile:
      • Update ENV BACKDROP_VERSION to the new release tag (point 1 above)
      • Update ENV BACKDROP_MD5 to the new md5 hash (point 2.2 above)
    • Update the README.md
      • Update the version numbers in the "Supported tags and respective Dockerfile links" section at the top
    • Confirm the rest of the file is accurate
  • Create a Pull Request with all of the changes listed above
    • If Travis tests pass -- Merge the pull request.
    • Make a note of the latest commit hash after the pull request has been merged. You will need it for updating the official docker-library (see next section)

2. Tell the Docker official images to build against the latest source

  • Update the 2 lines starting with Tags:, to reflect the latest version of Backdrop. For example, change from this:

    Tags: 1.29.1, 1.29, 1, 1.29.1-apache, 1.29-apache, 1-apache, apache, latest

    ...to this:

    Tags: 1.29.2, 1.29, 1, 1.29.2-apache, 1.29-apache, 1-apache, apache, latest

  • Update the git commit:

    • Make sure that the PR you have filed in the previous section has been committed -> Head to the commits list of the https://github.com/backdrop-ops/backdrop-docker repo. -> Click on the latest commit which updated the dockerfiles -> the full commit hash should be located at the top-right of the page, below the "Browse files" button.
    • Use the commit hash from the previous step, to update the 2 lines starting with GitCommit:

In order to help the Docker Library maintainers review and merge the PR, make sure to add as much useful info in the PR summary, such as:

Once the pull request is submitted, it will run through automated code testing. If the code passes automated review, the pull request will be reviewed by the code owners. Any issues with the pull request will need to be resolved. When the pull request is approved, you will get notification, and the new image will be become available.

3. Image testing

The final step of the process is to confirm the image is working as intended.

  • Create a new local docker project
    • mkdir test-project && cd test-project
    • Create a docker-compose.yml file in the project folder
services:
  backdrop:
    image: backdrop:latest
    ports:
      - 8080:80
    environment:
      BACKDROP_DB_HOST: db
      BACKDROP_DB_USER: backdrop
      BACKDROP_DB_PASSWORD: backdrop

  db:
    image: mysql
    environment:
      MYSQL_USER: backdrop
      MYSQL_PASSWORD: backdrop
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
      MYSQL_DATABASE: backdrop
  • Start the project: docker composer up
  • Once the project is loaded, visit the project page, and confirm the latest backdrop release is running: http:/localhost:8080/admin/reports/status

Once testing is complete, close the initial issue created in the Backdrop Docker issue queue.