mirror of
https://github.com/zkldi/Tachi.git
synced 2026-09-27 01:20:31 +03:00
83 lines
2.1 KiB
Docker
83 lines
2.1 KiB
Docker
# 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"]
|