# build stage FROM node:lts-alpine AS build-stage # Set environment variables for non-interactive npm installs ENV NPM_CONFIG_LOGLEVEL warn ENV CI true WORKDIR /app COPY package.json pnpm-lock.yaml ./ RUN npm install -g pnpm && pnpm i --frozen-lockfile COPY . . RUN pnpm build # production stage FROM nginx:stable-alpine AS production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
# build stage FROM node:20-alpine AS build-stage # Set environment variables for non-interactive npm installs ENV NPM_CONFIG_LOGLEVEL=warn ENV CI=true WORKDIR /app COPY package.json pnpm-lock.yaml ./ RUN npm install -g pnpm && pnpm i --frozen-lockfile COPY . . RUN pnpm build # production stage FROM nginx:stable-alpine AS production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
# Ignore node_modules and dist during build node_modules/ dist/ build/ .env* *.log .vscode/ .idea/ .DS_Store out/ .coverage/ *.sqlite3 coverage/ # Git related files .git .gitignore
Smoke [PASS]: test -f /usr/share/nginx/html/index.html Smoke [PASS]: test -f /etc/nginx/conf.d/default.conf Smoke [PASS]: ls -la /usr/share/nginx/html | head -n 5