# Build context must be the repo root (same as GHA docker-push: context `.`). # Respects .dockerignore (see repo root). Full tree copy keeps workspace installs correct. # docker build -f docker/Dockerfile.server --target prod-unified --build-arg COMMIT_HASH="$(git rev-parse --short HEAD)" -t tachi-server:local . # docker build -f docker/Dockerfile.server --target prod-api . # docker build -f docker/Dockerfile.server --target prod-job-worker . # docker build -f docker/Dockerfile.server --target prod-cron-worker . # # NOTE: bun build --compile is NOT used here because it's # FUCKING BROKEN FROM oven/bun:alpine AS base WORKDIR /app # --- install: full tree so bun sees every workspace package --- FROM base AS deps COPY . . RUN bun install --frozen-lockfile # --- API image --- FROM oven/bun:alpine AS prod-api ARG COMMIT_HASH ENV COMMIT_HASH=${COMMIT_HASH} ENV MIGRATIONS_DIR=/app/db/migrations ENV PORT=8080 RUN apk add --no-cache curl WORKDIR /app COPY --from=deps /app . EXPOSE 8080 HEALTHCHECK --interval=15s --timeout=5s --start-period=30s \ CMD curl -sf http://localhost:8080/.deploy/up || exit 1 CMD ["bun", "run", "./typescript/server/src/main.ts"] # --- Job queue worker (no HTTP port) --- FROM oven/bun:alpine AS prod-job-worker ARG COMMIT_HASH ENV COMMIT_HASH=${COMMIT_HASH} ENV MIGRATIONS_DIR=/app/db/migrations WORKDIR /app COPY --from=deps /app . CMD ["bun", "run", "./typescript/server/src/job-queue-worker.ts"] # --- Cron worker (no HTTP port) --- FROM oven/bun:alpine AS prod-cron-worker ARG COMMIT_HASH ENV COMMIT_HASH=${COMMIT_HASH} ENV MIGRATIONS_DIR=/app/db/migrations WORKDIR /app COPY --from=deps /app . CMD ["bun", "run", "./typescript/server/src/cron-worker.ts"] # --- All-in-one image. FROM oven/bun:alpine AS prod-unified ARG COMMIT_HASH ENV COMMIT_HASH=${COMMIT_HASH} ENV MIGRATIONS_DIR=/app/db/migrations ENV PORT=8080 RUN apk add --no-cache curl WORKDIR /app COPY --from=deps /app . EXPOSE 8080 HEALTHCHECK --interval=15s --timeout=5s --start-period=30s \ CMD curl -sf http://localhost:8080/.deploy/up || exit 1 CMD ["bun", "run", "./typescript/server/src/main.ts"]