Files
dynamic-sites-simple/Dockerfile
2026-04-23 00:32:32 -05:00

50 lines
1.1 KiB
Docker

FROM node:22-alpine AS base
WORKDIR /app
# Install deps (all workspaces)
COPY package.json package-lock.json* ./
COPY shared/package.json shared/
COPY server/package.json server/
RUN npm install --ignore-scripts
# Rebuild native modules (better-sqlite3)
RUN npm rebuild better-sqlite3
# Copy all source
COPY . .
# Build Astro SSR site
RUN npm run build
# ── Production stage ──
FROM node:22-alpine AS runtime
WORKDIR /app
# Install tsx globally for running the orchestrator
RUN npm install -g tsx
COPY --from=base /app/node_modules ./node_modules
COPY --from=base /app/shared ./shared
COPY --from=base /app/server ./server
COPY --from=base /app/dist ./dist
COPY --from=base /app/package.json ./
COPY --from=base /app/site-context.json ./
COPY --from=base /app/content ./content
COPY --from=base /app/content ./content-seed
COPY --from=base /app/config ./config
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
ENV HOST=0.0.0.0
ENV PORT=4321
ENV ORCHESTRATOR_PORT=3001
ENV REPO_ROOT=/app
ENV NODE_ENV=production
# Expose both ports
EXPOSE 4321 3001
ENTRYPOINT ["/app/entrypoint.sh"]