Configure l'environnement de développement complet avec Docker Compose, structure DDD 4 Bounded Contexts, et pipeline CI/CD GitHub Actions. Corrections compatibilité CI: - Symfony 8 nécessite monolog-bundle ^4.0 (la v3.x ne supporte que jusqu'à Symfony 7) - ESLint v9 nécessite flat config (eslint.config.js) - le format .eslintrc.cjs est obsolète
62 lines
2.1 KiB
Docker
62 lines
2.1 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
# =============================================================================
|
|
# Node.js 22 - Frontend Classeo (SvelteKit)
|
|
# =============================================================================
|
|
|
|
FROM node:22-alpine AS base
|
|
|
|
# Install pnpm
|
|
RUN corepack enable && corepack prepare pnpm@10.28.2 --activate
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# =============================================================================
|
|
# Development stage
|
|
# =============================================================================
|
|
FROM base AS dev
|
|
|
|
# Create entrypoint script for dev (installs deps if needed)
|
|
RUN echo '#!/bin/sh' > /usr/local/bin/docker-entrypoint.sh && \
|
|
echo 'set -e' >> /usr/local/bin/docker-entrypoint.sh && \
|
|
echo 'if [ ! -d /app/node_modules ] || [ ! -f /app/node_modules/.pnpm/lock.yaml ]; then' >> /usr/local/bin/docker-entrypoint.sh && \
|
|
echo ' echo "Installing pnpm dependencies..."' >> /usr/local/bin/docker-entrypoint.sh && \
|
|
echo ' pnpm install' >> /usr/local/bin/docker-entrypoint.sh && \
|
|
echo 'fi' >> /usr/local/bin/docker-entrypoint.sh && \
|
|
echo 'exec "$@"' >> /usr/local/bin/docker-entrypoint.sh && \
|
|
chmod +x /usr/local/bin/docker-entrypoint.sh
|
|
|
|
EXPOSE 5173
|
|
|
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
|
CMD ["pnpm", "run", "dev", "--host", "0.0.0.0"]
|
|
|
|
# =============================================================================
|
|
# Build stage
|
|
# =============================================================================
|
|
FROM base AS builder
|
|
|
|
COPY package.json pnpm-lock.yaml* ./
|
|
RUN if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile; else pnpm install; fi
|
|
|
|
COPY . .
|
|
RUN pnpm run build
|
|
|
|
# =============================================================================
|
|
# Production stage
|
|
# =============================================================================
|
|
FROM base AS prod
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
COPY package.json pnpm-lock.yaml* ./
|
|
RUN if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile --prod; else pnpm install --prod; fi
|
|
|
|
COPY --from=builder /app/build build/
|
|
COPY --from=builder /app/package.json .
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["node", "build"]
|