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/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..838896d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # 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. + Base Elixir Docker images. ## What's Included @@ -15,25 +25,11 @@ Base Elixir Docker images. ## Tags -> 🌟 recommended image - -* __articulate/elixir:1.13__ 🌟 +* articulate/elixir:1.13 * articulate/articulate-elixir:1.13 -* articulate/articulate-elixir:1.12 ### 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.