2024-11-13 17:22:53 +00:00
# Versions
# https://hub.docker.com/_/alpine
2025-01-09 14:11:14 +00:00
ARG BASE_IMAGE = alpine:3.21
2023-08-11 14:04:53 +00:00
# https://download.docker.com/linux/static/stable/
2025-02-24 17:08:54 +00:00
ARG DOCKER_VERSION = 28 .0.0
2023-08-11 14:04:53 +00:00
# https://github.com/docker/compose/releases
2025-07-18 14:25:01 +00:00
ARG DOCKER_COMPOSE_VERSION = 2 .38.2
2023-08-11 14:04:53 +00:00
# https://github.com/docker/buildx/releases
2025-07-18 14:25:01 +00:00
ARG DOCKER_BUILDX_VERSION = 0 .25.0
2023-08-11 14:04:53 +00:00
# https://github.com/buildpacks/pack/releases
2025-07-18 14:25:01 +00:00
ARG PACK_VERSION = 0 .38.2
2023-08-11 14:04:53 +00:00
# https://github.com/railwayapp/nixpacks/releases
2025-10-31 01:45:42 +00:00
ARG NIXPACKS_VERSION = 1 .41.0
2026-03-23 17:12:02 +00:00
# https://github.com/railwayapp/railpack/releases
2026-03-23 19:02:10 +00:00
ARG RAILPACK_VERSION = 0 .22.0
2026-03-23 17:12:02 +00:00
# https://github.com/jdx/mise/releases — must match railpack's pinned version (https://raw.githubusercontent.com/railwayapp/railpack/refs/heads/main/core/mise/version.txt)
ARG MISE_VERSION = 2026 .3.12
2025-01-09 14:11:14 +00:00
# https://github.com/minio/mc/releases
2025-09-10 17:58:10 +00:00
ARG MINIO_VERSION = RELEASE.2025-08-13T08-35-41Z
2024-11-13 17:22:53 +00:00
2025-09-15 16:57:30 +00:00
2024-11-13 17:22:53 +00:00
FROM minio/mc:${MINIO_VERSION} AS minio-client
FROM ${BASE_IMAGE} AS base
ARG TARGETPLATFORM
ARG DOCKER_VERSION
ARG DOCKER_COMPOSE_VERSION
ARG DOCKER_BUILDX_VERSION
ARG PACK_VERSION
ARG NIXPACKS_VERSION
2026-03-23 17:12:02 +00:00
ARG RAILPACK_VERSION
ARG MISE_VERSION
2023-08-11 14:04:53 +00:00
USER root
WORKDIR /artifacts
2026-04-28 12:37:31 +00:00
ENV RAILPACK_VERSION = ${ RAILPACK_VERSION }
2026-04-04 22:23:17 +00:00
RUN apk upgrade --no-cache && \
apk add --no-cache bash curl git git-lfs openssh-client tar tini
2023-08-11 14:04:53 +00:00
RUN mkdir -p ~/.docker/cli-plugins
2026-03-23 17:12:02 +00:00
# Install mise (musl build) at the path railpack expects (/tmp/railpack/mise/mise-VERSION).
# Railpack hardcodes a glibc mise download that fails on Alpine, so we pre-place a musl binary.
RUN mkdir -p /tmp/railpack/mise && \
if [ [ ${ TARGETPLATFORM } = = 'linux/amd64' ] ] ; then \
curl -sSL " https://github.com/jdx/mise/releases/download/v ${ MISE_VERSION } /mise-v ${ MISE_VERSION } -linux-x64-musl.tar.gz " | tar xz && \
mv mise/bin/mise " /tmp/railpack/mise/mise- ${ MISE_VERSION } " && rm -rf mise; \
elif [ [ ${ TARGETPLATFORM } = = 'linux/arm64' ] ] ; then \
curl -sSL " https://github.com/jdx/mise/releases/download/v ${ MISE_VERSION } /mise-v ${ MISE_VERSION } -linux-arm64-musl.tar.gz " | tar xz && \
mv mise/bin/mise " /tmp/railpack/mise/mise- ${ MISE_VERSION } " && rm -rf mise; \
fi
2023-08-11 14:04:53 +00:00
RUN if [ [ ${ TARGETPLATFORM } = = 'linux/amd64' ] ] ; then \
curl -sSL https://github.com/docker/buildx/releases/download/v${ DOCKER_BUILDX_VERSION } /buildx-v${ DOCKER_BUILDX_VERSION } .linux-amd64 -o ~/.docker/cli-plugins/docker-buildx && \
curl -sSL https://github.com/docker/compose/releases/download/v${ DOCKER_COMPOSE_VERSION } /docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose && \
( curl -sSL https://download.docker.com/linux/static/stable/x86_64/docker-${ DOCKER_VERSION } .tgz | tar -C /usr/bin/ --no-same-owner -xzv --strip-components= 1 docker/docker) && \
( curl -sSL https://github.com/buildpacks/pack/releases/download/v${ PACK_VERSION } /pack-v${ PACK_VERSION } -linux.tgz | tar -C /usr/local/bin/ --no-same-owner -xzv pack) && \
curl -sSL https://nixpacks.com/install.sh | bash && \
2026-03-23 17:12:02 +00:00
curl -sSL https://railpack.com/install.sh | RAILPACK_VERSION = ${ RAILPACK_VERSION } sh && \
2023-08-11 14:04:53 +00:00
chmod +x ~/.docker/cli-plugins/docker-compose /usr/bin/docker /usr/local/bin/pack /root/.docker/cli-plugins/docker-buildx \
; fi
RUN if [ [ ${ TARGETPLATFORM } = = 'linux/arm64' ] ] ; then \
curl -sSL https://github.com/docker/buildx/releases/download/v${ DOCKER_BUILDX_VERSION } /buildx-v${ DOCKER_BUILDX_VERSION } .linux-arm64 -o ~/.docker/cli-plugins/docker-buildx && \
curl -sSL https://github.com/docker/compose/releases/download/v${ DOCKER_COMPOSE_VERSION } /docker-compose-linux-aarch64 -o ~/.docker/cli-plugins/docker-compose && \
( curl -sSL https://download.docker.com/linux/static/stable/aarch64/docker-${ DOCKER_VERSION } .tgz | tar -C /usr/bin/ --no-same-owner -xzv --strip-components= 1 docker/docker) && \
( curl -sSL https://github.com/buildpacks/pack/releases/download/v${ PACK_VERSION } /pack-v${ PACK_VERSION } -linux-arm64.tgz | tar -C /usr/local/bin/ --no-same-owner -xzv pack) && \
curl -sSL https://nixpacks.com/install.sh | bash && \
2026-03-23 17:12:02 +00:00
curl -sSL https://railpack.com/install.sh | RAILPACK_VERSION = ${ RAILPACK_VERSION } sh && \
2023-08-11 14:04:53 +00:00
chmod +x ~/.docker/cli-plugins/docker-compose /usr/bin/docker /usr/local/bin/pack /root/.docker/cli-plugins/docker-buildx \
; fi
2024-11-13 17:22:53 +00:00
COPY --from= minio-client /usr/bin/mc /usr/bin/mc
2023-08-11 14:04:53 +00:00
RUN chmod +x /usr/bin/mc
2023-09-04 14:25:18 +00:00
ENTRYPOINT [ "/sbin/tini" , "--" ]
2023-09-04 14:51:36 +00:00
CMD [ "tail" , "-f" , "/dev/null" ]