Files
dex-ui-vue/docker/Dockerfile
2025-07-15 17:33:39 +02:00

36 lines
838 B
Docker

# Stage 1: Build application
FROM node:22-bookworm-slim AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Create runtime image
FROM nginxinc/nginx-unprivileged:1.25-alpine AS runtime
# Create writable directories
USER root
RUN mkdir -p /runtime-config && \
chown nginx:nginx /runtime-config && \
chown -R nginx:nginx /var/cache/nginx && \
chown -R nginx:nginx /var/run
USER nginx
# Copy built assets
COPY --from=builder --chown=nginx:nginx /app/dist /usr/share/nginx/html
# Copy nginx config template
COPY --chown=nginx:nginx nginx.conf.template /etc/nginx/templates/
# Copy entrypoint script
COPY --chown=nginx:nginx docker/entrypoint.sh /entrypoint.sh
# Make entrypoint executable
USER root
RUN chmod +x /entrypoint.sh
USER nginx
EXPOSE 8080
ENTRYPOINT ["/entrypoint.sh"]