# => Build container FROM node:18-alpine AS build WORKDIR /app COPY frontend/package.json ./ RUN npm install --silent COPY frontend/ ./ ENV NODE_OPTIONS=--openssl-legacy-provider RUN npm run build # => Run container FROM nginx:stable-alpine # Nginx config RUN rm -rf /etc/nginx/conf.d COPY docker/prod/frontend/nginx.conf /etc/nginx/nginx.conf COPY frontend/conf /etc/nginx # Copy htpasswd file for authentication COPY docker/prod/frontend/config/htpasswd /etc/nginx/.htpasswd # Static build COPY --from=build /app/build /usr/share/nginx/html # Default port exposure EXPOSE 80 # Copy .env file and shell script to container WORKDIR /usr/share/nginx/html COPY docker/prod/frontend/config/env.sh ./ COPY docker/prod/frontend/config/.env ./ # Add bash RUN apk add --no-cache bash # Make our shell script executable RUN chmod +x env.sh # Start Nginx server CMD ["/bin/bash", "-c", "/usr/share/nginx/html/env.sh && nginx -g \"daemon off;\""]