Files
podman/infra/Dockerfile
2026-06-28 01:44:26 +00:00

33 lines
1.1 KiB
Docker

# PodMan backend runtime — built from the monorepo root.
# Build: docker build -f infra/Dockerfile -t podman-backend .
# Run API: docker run --env-file backend/.env -e PODMAN_PROCESS=server -p 8787:8787 podman-backend
# Run agent: docker run --env-file backend/.env -e PODMAN_PROCESS=agent podman-backend
FROM node:24-slim AS base
ENV PNPM_HOME=/pnpm
ENV PATH="$PNPM_HOME:$PATH"
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates openssl \
&& rm -rf /var/lib/apt/lists/*
RUN corepack enable
WORKDIR /app
# Install workspace deps (cached on lockfile)
FROM base AS deps
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
COPY shared/package.json shared/
COPY backend/package.json backend/
RUN pnpm install --frozen-lockfile
# Build shared + backend
FROM deps AS build
COPY . .
RUN pnpm --filter @podman/shared build && pnpm --filter @podman/backend build
# Runtime
FROM base AS runtime
ENV NODE_ENV=production
ENV PODMAN_PROCESS=server
COPY --from=build /app /app
EXPOSE 8787
CMD ["sh", "-c", "if [ \"$PODMAN_PROCESS\" = \"agent\" ]; then exec node backend/dist/agent.js; else exec node backend/dist/server.js; fi"]