2023-03-25 16:49:04 -05:00
|
|
|
# Multi-stage
|
|
|
|
# 1) Node image for building frontend assets
|
|
|
|
# 2) nginx stage to serve frontend assets
|
|
|
|
|
|
|
|
# Name the node stage "builder"
|
|
|
|
FROM node:16 AS builder
|
|
|
|
# Set working directory
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy all files from current directory to working dir in image
|
|
|
|
COPY . .
|
|
|
|
# install node modules and build assets
|
|
|
|
RUN npm i && npm run build
|
|
|
|
|
|
|
|
# nginx state for serving content
|
|
|
|
FROM nginx:alpine
|
|
|
|
# Set working directory to nginx asset directory
|
|
|
|
WORKDIR /usr/share/nginx/html
|
|
|
|
# Remove default nginx static assets
|
|
|
|
RUN rm -rf ./*
|
|
|
|
# Copy static assets from builder stage
|
|
|
|
COPY --from=builder /app/dist .
|
|
|
|
# Containers run nginx with global directives and daemon off
|
2023-03-25 20:50:45 -05:00
|
|
|
EXPOSE 80
|
2023-03-25 16:49:04 -05:00
|
|
|
ENTRYPOINT ["nginx", "-g", "daemon off;"]
|