feat: add Dockerfile and GitHub Actions workflow for GHCR deployment

This commit is contained in:
ergosteur
2026-03-07 02:45:17 -05:00
parent 67f7750157
commit 6f5021638c
4 changed files with 97 additions and 2 deletions

38
Dockerfile Normal file
View File

@@ -0,0 +1,38 @@
# Stage 1: Build
FROM node:20-slim AS build
WORKDIR /app
# Install build dependencies
COPY package*.json ./
RUN npm ci
# Copy source and build frontend
COPY . .
RUN npm run build
# Stage 2: Runtime
FROM node:20-slim AS runtime
# Set production environment
ENV NODE_ENV=production
ENV PORT=3000
ENV ARCHIVES_DIR=/archives
WORKDIR /app
# Install runtime dependencies only
COPY package*.json ./
RUN npm ci --omit=dev
# Copy built assets and server
COPY --from=build /app/dist ./dist
COPY --from=build /app/server.ts ./
# Ensure archives directory exists
RUN mkdir -p /archives
EXPOSE 3000
# Start server using tsx
CMD ["npx", "tsx", "server.ts"]