garage-webui/Dockerfile

35 lines
755 B
Docker

FROM node:20-slim AS base
WORKDIR /app
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
FROM base AS frontend
COPY package.json pnpm-lock.yaml ./
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
COPY . .
RUN pnpm run build
FROM base AS backend-deps
COPY backend/package.json backend/pnpm-lock.yaml ./
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install -prod --frozen-lockfile
COPY backend .
FROM oven/bun:alpine AS backend
WORKDIR /app
COPY --from=backend-deps /app .
RUN bun run build
FROM oven/bun:alpine
WORKDIR /app
ENV NODE_ENV=production
ENV DIST_ROOT=./dist
COPY --from=frontend /app/dist /app/dist
COPY --from=backend /app/dist /app
ENTRYPOINT [ "bun" , "run", "main.js" ]