83 lines
1.3 KiB
Docker
83 lines
1.3 KiB
Docker
# servir une application angular buildée
|
|
|
|
# qui utilise la lib sae Aero
|
|
|
|
# - relier la lib my_workspace
|
|
|
|
# - build de l'app angular
|
|
|
|
# - servir le build
|
|
|
|
# Use official Node.js LTS image
|
|
|
|
FROM node:24-alpine AS build
|
|
|
|
# Set working directory
|
|
|
|
WORKDIR /usr/src/app
|
|
|
|
# Create a non-root user
|
|
|
|
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
|
|
|
|
# Copy package.json and package-lock.json as root and install dependencies
|
|
|
|
COPY package*.json ./
|
|
|
|
# Copy app source and fix ownership
|
|
|
|
COPY . .
|
|
|
|
RUN chown -R appuser:appgroup /usr/src/app
|
|
|
|
RUN pwd
|
|
|
|
RUN cd /usr/src/app/my-workspace/projects/sae-lib
|
|
|
|
RUN npm link
|
|
|
|
# Switch to non-root user
|
|
|
|
USER appuser
|
|
|
|
RUN pwd
|
|
|
|
RUN cd ../../../../../
|
|
|
|
RUN npm link sae-lib
|
|
|
|
RUN npm install
|
|
|
|
RUN npm run build
|
|
|
|
RUN echo "building done"
|
|
|
|
# Add healthcheck (tries every 30s, times out after 10s, fails after 3 retries)
|
|
|
|
# HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
|
|
|
|
# CMD wget -qO- http://localhost:8080/ || exit 1
|
|
|
|
# ============================
|
|
|
|
# 🚀 Stage 2 — Serve with NGINX
|
|
|
|
# ============================
|
|
|
|
FROM nginx:1.29-alpine AS serve
|
|
|
|
# Remove default NGINX website
|
|
|
|
RUN rm -rf /usr/share/nginx/html/*
|
|
|
|
# Copy built Angular app from previous stage
|
|
|
|
COPY --from=build /app/dist/implem /usr/share/nginx/html
|
|
|
|
# Expose port 80
|
|
|
|
EXPOSE 80
|
|
|
|
# Start NGINX
|
|
|
|
CMD ["nginx", "-g", "daemon off;"]
|