# Build stage FROM node:20-slim AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Production stage FROM node:20-slim # Build arguments for version info ARG APP_BUILD_VERSION=dev ARG APP_GIT_SHA=unknown ARG APP_BUILD_TIME=unknown ARG CONTAINER_IMAGE_TAG=local # Set version info as environment variables ENV APP_BUILD_VERSION=${APP_BUILD_VERSION} ENV APP_GIT_SHA=${APP_GIT_SHA} ENV APP_BUILD_TIME=${APP_BUILD_TIME} ENV CONTAINER_IMAGE_TAG=${CONTAINER_IMAGE_TAG} # Install Chromium dependencies RUN apt-get update && apt-get install -y \ chromium \ fonts-liberation \ libnss3 \ libxss1 \ libasound2 \ libatk-bridge2.0-0 \ libgtk-3-0 \ --no-install-recommends \ && rm -rf /var/lib/apt/lists/* ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY --from=builder /app/dist ./dist # Create local images directory for when MinIO is not configured RUN mkdir -p /app/public/images/products EXPOSE 3010 CMD ["node", "dist/index.js"]