26 lines
1.4 KiB
Docker
26 lines
1.4 KiB
Docker
# The updater is the only service that gets the Docker CLI and the Docker socket, so it is built
|
|
# separately from the application image rather than adding root-equivalent tooling to api, worker,
|
|
# and web. It is also the only service the update never recreates, so its own image moves on the
|
|
# operator's schedule: `docker compose pull updater && docker compose up -d updater`.
|
|
FROM docker:27-cli@sha256:851f91d241214e7c6db86513b270d58776379aacc5eb9c4a87e5b47115e3065c AS dockercli
|
|
|
|
FROM node:22-bookworm-slim@sha256:d649c27dae7ba0137b3cef5dd75baa422c08dc3d9e3fc0c23dfb172dc3cc6436
|
|
COPY --from=dockercli /usr/local/bin/docker /usr/local/bin/docker
|
|
COPY --from=dockercli /usr/local/libexec/docker/cli-plugins/docker-compose \
|
|
/usr/local/libexec/docker/cli-plugins/docker-compose
|
|
COPY --from=dockercli /usr/local/libexec/docker/cli-plugins/docker-buildx \
|
|
/usr/local/libexec/docker/cli-plugins/docker-buildx
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends git ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
WORKDIR /app
|
|
COPY pnpm-workspace.yaml pnpm-lock.yaml package.json ./
|
|
COPY packages/contracts packages/contracts
|
|
COPY packages/core packages/core
|
|
COPY infra/updater infra/updater
|
|
RUN corepack enable && pnpm install --frozen-lockfile --prod --filter "@rakazo/updater..."
|
|
WORKDIR /app/infra/updater
|
|
ARG GIT_SHA
|
|
ENV GIT_SHA=$GIT_SHA
|
|
CMD ["pnpm", "exec", "tsx", "src/index.ts"]
|