- Use Google Distroless images for all services (Go & Node.js). - Standardize documentation with [PROJECT-NAME].md. - Add .dockerignore and .gitignore to all projects. - Remove docker-compose.yml in favor of docker run instructions. - Fix Go version and dependency issues in observability, repo-integrations, and security-governance. - Add Podman support (fully qualified image names). - Update Dashboard to use Node.js static server for Distroless compatibility.
36 lines
641 B
Docker
36 lines
641 B
Docker
# Dockerfile
|
|
# Stage 1: Build the application
|
|
FROM docker.io/library/node:20-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json package-lock.json* ./
|
|
RUN npm install
|
|
|
|
COPY tsconfig.json ./
|
|
COPY src ./src
|
|
|
|
RUN npm run build
|
|
|
|
# Stage 2: Install production dependencies
|
|
FROM docker.io/library/node:20-alpine AS prod-deps
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json package-lock.json* ./
|
|
|
|
RUN npm install --omit=dev
|
|
|
|
# Stage 3: Run the application
|
|
FROM gcr.io/distroless/nodejs20-debian12
|
|
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
COPY --from=prod-deps /app/node_modules ./node_modules
|
|
COPY --from=builder /app/dist ./dist
|
|
|
|
EXPOSE 4000
|
|
|
|
CMD ["dist/main.js"]
|