From 45f84dac120000d319bac9bed5d14f560fac603d Mon Sep 17 00:00:00 2001 From: Ivor Thibodo Date: Mon, 26 Oct 2026 10:58:52 -0500 Subject: [PATCH 1/3] chore: remove unused elixir 1.12 image --- 1.12/Dockerfile | 35 ----------------------------------- README.md | 1 - 2 files changed, 36 deletions(-) delete mode 100644 1.12/Dockerfile diff --git a/1.12/Dockerfile b/1.12/Dockerfile deleted file mode 100644 index 64e9edc..0000000 --- a/1.12/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -# tags=articulate/articulate-elixir:1.12 -# syntax=docker/dockerfile:1 -FROM elixir:1.12-slim - -ENV SERVICE_ROOT /service -ENV SERVICE_USER service - -ARG TARGETARCH -ARG AWSCLI_VERSION=2.11.15 -ADD --chmod=755 https://github.com/articulate/docker-bootstrap/releases/latest/download/docker-bootstrap_linux_${TARGETARCH} /entrypoint -ADD --chmod=755 https://raw.githubusercontent.com/articulate/docker-bootstrap/main/scripts/docker-secrets /usr/local/bin/secrets -ADD --chmod=755 https://raw.githubusercontent.com/vishnubob/wait-for-it/81b1373f17855a4dc21156cfe1694c31d7d1792e/wait-for-it.sh /wait-for-it.sh - -# install hex package manager -RUN mix local.hex --force && \ - mix local.rebar --force && \ - groupadd --gid 1001 $SERVICE_USER && \ - useradd --create-home --home $SERVICE_ROOT --shell /bin/bash --gid 1001 --uid 1001 $SERVICE_USER \ - # libc-bin had some cached files that started causing a segfault in the apt-get update https://stackoverflow.com/a/78107622 - && rm -f /var/lib/dpkg/info/libc-bin.* \ - # TODO: these packages will be removed in an upcoming release - # if you want them, please copy to your Dockerfile - && apt-get update -qq \ - && apt-get install --yes --no-install-recommends \ - libc-bin unzip sudo jq wget curl ca-certificates dumb-init \ - && apt-get clean && apt-get autoclean && apt-get -y autoremove --purge \ - && rm -rf /var/lib/apt/lists/* /usr/share/doc /root/.cache/ \ - && curl -s "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m)-${AWSCLI_VERSION}.zip" -o /tmp/awscliv2.zip \ - && unzip -d /tmp /tmp/awscliv2.zip \ - && /tmp/aws/install \ - && rm -rf /tmp/aws /tmp/awscliv2 /tmp/awscliv2.zip - -WORKDIR $SERVICE_ROOT - -ENTRYPOINT [ "dumb-init", "--", "/entrypoint" ] diff --git a/README.md b/README.md index 4f1ca1e..72ad754 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,6 @@ Base Elixir Docker images. * __articulate/elixir:1.13__ 🌟 * articulate/articulate-elixir:1.13 -* articulate/articulate-elixir:1.12 ### articulate/elixir vs articulate/articulate-elixir From 8b7fec8f9aa90fb67b94952a597527cd7e0e0eca Mon Sep 17 00:00:00 2001 From: Ivor Thibodo Date: Mon, 26 Oct 2026 10:59:05 -0500 Subject: [PATCH 2/3] chore: deprecate elixir images and stop builds Elixir 1.13 is end of life and the Debian bullseye security packages the images install now return 404, so every build fails. Remove the build workflow so nothing builds or publishes again, and add a deprecation notice to the README. The published 1.13 tags stay on Docker Hub. --- .github/workflows/build.yaml | 80 ------------------------------------ README.md | 32 +++++++-------- 2 files changed, 16 insertions(+), 96 deletions(-) delete mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 09a0828..0000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,80 +0,0 @@ -name: Build - -on: - pull_request: - merge_group: - push: - branches: - - main - schedule: - - cron: "0 0 * * 1-6" - - cron: "0 0 * * 0" # runs with no-cache - workflow_dispatch: - inputs: - no-cache: - description: "Skip Docker cache" - type: boolean - default: false - -jobs: - setup: - runs-on: ubuntu-slim - steps: - - uses: actions/checkout@v7 - - name: Find Dockerfiles - id: scan - run: echo "dockerfiles=$(find . -name Dockerfile | cut -c3- | jq -R -s -c 'split("\n")[:-1]')" >> "$GITHUB_OUTPUT" - outputs: - dockerfiles: ${{ steps.scan.outputs.dockerfiles }} - build: - runs-on: ubuntu-latest - needs: setup - strategy: - fail-fast: false - matrix: - dockerfile: ${{ fromJSON(needs.setup.outputs.dockerfiles) }} - steps: - - uses: actions/checkout@v7 - - name: Get image metadata - id: meta - run: | - tags=$(grep "tags=" ${{ matrix.dockerfile }} | cut -d "=" -f 2) - echo "context=$(dirname "${{ matrix.dockerfile }}")" >> "$GITHUB_OUTPUT" - echo "tags=${tags}" >> "$GITHUB_OUTPUT" - echo "cache=$(echo "$tags" | cut -d "," -f 1)" >> "$GITHUB_OUTPUT" - - uses: docker/setup-qemu-action@v4 - - uses: docker/setup-buildx-action@v4 - - uses: docker/login-action@v4 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - uses: docker/build-push-action@v7 - with: - context: ${{ steps.meta.outputs.context }} - pull: ${{ github.event_name != 'pull_request' && github.event_name != 'merge_group' }} - push: ${{ github.event_name != 'pull_request' && github.event_name != 'merge_group' }} - tags: ${{ steps.meta.outputs.tags }} - platforms: linux/amd64,linux/arm64/v8 - cache-from: type=registry,ref=${{ steps.meta.outputs.cache }} - cache-to: type=inline - no-cache: ${{ github.event.schedule == '0 0 * * 0' || (github.event_name == 'workflow_dispatch' && inputs.no-cache) }} - build-complete: - if: always() - runs-on: ubuntu-slim - needs: [build] - steps: - - name: Verify build succeeded - run: | - [ "${{ needs.build.result }}" = "success" ] || exit 1 - dockerhub: - runs-on: ubuntu-slim - needs: build - if: github.event_name != 'pull_request' && github.event_name != 'merge_group' - steps: - - uses: actions/checkout@v7 - - uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa # pin@v5 - with: - repository: articulate/elixir - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - short-description: ${{ github.event.repository.description }} diff --git a/README.md b/README.md index 72ad754..21e568e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,18 @@ # Docker Elixir Images +> [!WARNING] +> **Deprecated.** These images are no longer built or maintained, and this +> repository is archived. Do not use them for new services; Articulate no longer +> builds new services in Elixir. +> +> Elixir 1.13 is end of life, and the Debian bullseye security packages these +> images install are no longer available, so the images cannot be rebuilt. The +> [published tags](#tags) stay on Docker Hub, frozen at their last successful +> build. +> +> Known consumers: `articulate/rise-authoring-api` and +> `articulate/rise-business-content`, both on `articulate/articulate-elixir:1.13`. + Base Elixir Docker images. ## What's Included @@ -15,24 +28,11 @@ Base Elixir Docker images. ## Tags -> 🌟 recommended image - -* __articulate/elixir:1.13__ 🌟 +* articulate/elixir:1.13 * articulate/articulate-elixir:1.13 ### articulate/elixir vs articulate/articulate-elixir `articulate/articulate-elixir` are the legacy Docker images. These run as root and -include additional software not always needed. Use `articulate/elixir` where possible -and install your own software with `install_packages`. - -## Creating a new image - -The easiest way to create a new image is to copy an existing one and change the -base image. If creating from scratch, the images need the following: - -* Everything listed in [What's included](#whats-included) -* `make` for internal tooling. -* A _service_ user and group with a GID and UID of 1001. This should be the default - user. -* A _/service_ directory as the default working directory. +include additional software not always needed. `articulate/elixir` runs as a +non-root _service_ user and provides `install_packages` for adding software. From 2efb9ac304d831aab227f24f5ab6bdc1165bdff6 Mon Sep 17 00:00:00 2001 From: Ivor Thibodo Date: Mon, 26 Oct 2026 11:01:53 -0500 Subject: [PATCH 3/3] docs: drop internal consumer names from public README --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 21e568e..838896d 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,6 @@ > images install are no longer available, so the images cannot be rebuilt. The > [published tags](#tags) stay on Docker Hub, frozen at their last successful > build. -> -> Known consumers: `articulate/rise-authoring-api` and -> `articulate/rise-business-content`, both on `articulate/articulate-elixir:1.13`. Base Elixir Docker images.