Skip to content

ckan/ckan-docker-base

Repository files navigation

Pre-configured CKAN Docker images

This is the repository of the official Docker images for CKAN.

Please raise issues or code contributions at github:ckan/ckan-docker-base

The images will usually be used as a Docker Compose install in conjunction with other Docker images that make up the CKAN platform. The official CKAN Docker install is located here: ckan-docker

The following CKAN versions are available in base or dev forms. They are distinguished from one another using different Docker image tags:

CKAN Version Type Base image Docker tag Notes
2.11.x base image python:3.10-slim-bookworm ckan/ckan-base:2.11, ckan/ckan-base:2.11.1, ckan/ckan-base:2.11-py3.10, ckan/ckan-base:2.11.1-py3.10
2.11.x dev image python:3.10-slim-bookworm ckan/ckan-dev:2.11, ckan/ckan-dev:2.11.1, ckan/ckan-dev:2.11-py3.10, ckan/ckan-dev:2.11.1-py3.10
2.10.x base image python:3.10-slim-bookworm ckan/ckan-base:2.10-py3.10, ckan/ckan-base:2.10.6-py3.10
2.10.x dev image python:3.10-slim-bookworm ckan/ckan-dev:2.10-py3.10, ckan/ckan-dev:2.10.6-py3.10
2.10.x base image alpine:3.17 ckan/ckan-base:2.10.6, ckan/ckan-base:2.10 ⚠️ Deprecated. Please use a Python/Debian based image
2.10.x dev image alpine:3.17 ckan/ckan-dev:2.10.6, ckan/ckan-dev:2.10 ⚠️ Deprecated. Please use a Python/Debian based image
2.9.x base image python:3.9-slim-bookworm ckan/ckan-base:2.9-py3.9, ckan/ckan-base:2.9.11-py3.9
2.9.x dev image python:3.9-slim-bookworm ckan/ckan-dev:2.9-py3.9, ckan/ckan-dev:2.9.11-py3.9
2.9.x base image alpine:3.15 ckan/ckan-base:2.9.11, ckan/ckan-base:2.9 ⚠️ Deprecated. Please use a Python/Debian based image
2.9.x dev image alpine:3.15 ckan/ckan-dev:2.9.11, ckan/ckan-dev:2.9 ⚠️ Deprecated. Please use a Python/Debian based image
master base image python:3.10-slim-bookworm ckan/ckan-base:master, ckan/ckan-base:master-py3.10 Built daily, do not use in production
master dev image python:3.10-slim-bookworm ckan/ckan-dev:master, ckan/ckan-dev:master-py3.10 Built daily, do not use in production

In addition to the Docker tags listed above, there are additional ones published for each of these images releases, in the form:

ckan/ckan-base:{major_version}-py{python_version}-{release_name}

Older CKAN versions might be available as image tags but note that these are not supported as per CKAN's release policy.

Repo structure

Each CKAN version is located in separate repo containing:

ckan-X.XX
├── Dockerfile          # Dockerfile for the image (in older versions there might be one for alpine and one for python)
├── VERSION.txt         # Full CKAN version built (eg. 2.11.1, 2.10.6)
├── PYTHON_VERSION.txt  # Python version used (eg. 3.10)
└── setup               # Setup scripts used by the images
    ├── prerun.py
    ├── start_ckan_development.sh
    ├── start_ckan.sh
    ├── unsafe.cert
    └── unsafe.key

Release

Images are built and pushed to the Docker Hub after a new release is published. All non-trivial changes to this repo (certainly those which affect the images) should be done via a Pull Request. This will trigger automated tests that check that the image builds fine and perform some basic tests, but more thorough local testing might be necessary.

Once the maintainers decide it's time to do a new release, changes should be documented as part of the release notes. Publishing the new release will trigger the actions that push the images to Docker Hub.

Building the images locally

The images can be built locally for development and debugging purposes

Warning

Do not push images directly to the Docker Hub locally. Use the proper release process described above.

All operations are done using the build.sh script located at the root of the repository.

Usage: ./build.sh <action> [<params>]
Available actions:
  versions                   - Shows the current CKAN versions used
  build <version> [base|dev] - Builds images for a CKAN version
                               Pass 'base' or 'dev' to just build these.
  push  <version>            - Pushes images to the Docker Hub

For instance:

./build.sh build 2.11

./build.sh build master
./build.sh build 2.10 base
./build.sh build 2.9 dev