refactor: simplifier Dockerfile et hook — code via volume, pas image
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -14,28 +14,31 @@ git --work-tree="$DEPLOY_DIR" --git-dir="$REPO_DIR" checkout -f main
|
|||||||
|
|
||||||
cd "$DEPLOY_DIR"
|
cd "$DEPLOY_DIR"
|
||||||
|
|
||||||
# 2. Dépendances PHP (sans scripts en prod pour éviter les erreurs de conteneur)
|
# 2. Dépendances PHP dans le container (vendor/ est dans le volume ./backend)
|
||||||
echo "==> composer install"
|
echo "==> composer install"
|
||||||
docker compose exec -T php composer install \
|
docker compose exec -T php composer install \
|
||||||
--no-dev --no-interaction --optimize-autoloader --no-scripts 2>&1 || \
|
--no-dev --no-interaction --optimize-autoloader --no-scripts 2>&1
|
||||||
docker run --rm -v "$DEPLOY_DIR/backend":/app -w /app \
|
|
||||||
composer:2 install --no-dev --no-interaction --optimize-autoloader
|
|
||||||
|
|
||||||
# 3. Build React → backend/public
|
# 3. Build React (outDir configuré à ../backend/public dans vite.config.js)
|
||||||
echo "==> npm run build"
|
echo "==> npm run build"
|
||||||
docker run --rm -v "$DEPLOY_DIR/frontend":/app -w /app \
|
docker run --rm \
|
||||||
|
-v "$DEPLOY_DIR/frontend":/app/frontend \
|
||||||
|
-v "$DEPLOY_DIR/backend/public":/app/backend/public \
|
||||||
|
-w /app/frontend \
|
||||||
node:20-alpine sh -c "npm ci --silent && npm run build"
|
node:20-alpine sh -c "npm ci --silent && npm run build"
|
||||||
|
|
||||||
# 4. Migrations Doctrine
|
# 4. Migrations Doctrine
|
||||||
echo "==> migrations:migrate"
|
echo "==> migrations:migrate"
|
||||||
docker compose exec -T php php bin/console doctrine:migrations:migrate --no-interaction --env=prod
|
docker compose exec -T php php bin/console doctrine:migrations:migrate --no-interaction --env=prod
|
||||||
|
|
||||||
# 5. Vidage du cache Symfony
|
# 5. Cache Symfony
|
||||||
echo "==> cache:clear"
|
echo "==> cache:clear + warmup"
|
||||||
docker compose exec -T php php bin/console cache:clear --env=prod --no-warmup
|
docker compose exec -T php php bin/console cache:clear --env=prod --no-warmup
|
||||||
docker compose exec -T php php bin/console cache:warmup --env=prod
|
docker compose exec -T php php bin/console cache:warmup --env=prod
|
||||||
|
|
||||||
# 6. Redémarrage des conteneurs si la config Docker a changé
|
# 6. Redémarrer si docker-compose.yml a changé
|
||||||
|
# PAS de --build : le code est dans le volume, l'image ne change que si le
|
||||||
|
# Dockerfile est modifié (nouvelles extensions PHP, GDAL, etc.)
|
||||||
echo "==> docker compose up -d"
|
echo "==> docker compose up -d"
|
||||||
docker compose up -d --remove-orphans
|
docker compose up -d --remove-orphans
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
FROM dunglas/frankenphp:latest-php8.3
|
FROM dunglas/frankenphp:latest-php8.3
|
||||||
|
|
||||||
# Dépendances système
|
# Dépendances système (GDAL pour vectorisation satellite)
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
libzip-dev \
|
libzip-dev \
|
||||||
@@ -20,24 +20,15 @@ RUN install-php-extensions \
|
|||||||
opcache \
|
opcache \
|
||||||
apcu
|
apcu
|
||||||
|
|
||||||
# Composer
|
# Composer (utilisé par le hook post-receive dans le container)
|
||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Dépendances en premier (cache Docker layer)
|
|
||||||
COPY backend/composer.json backend/composer.lock ./
|
|
||||||
RUN composer install --no-dev --optimize-autoloader --no-scripts
|
|
||||||
|
|
||||||
# Code source
|
|
||||||
COPY backend/ .
|
|
||||||
|
|
||||||
# Autoload uniquement — pas de cache:warmup ici (besoin de .env.local au runtime)
|
|
||||||
RUN composer dump-autoload --optimize
|
|
||||||
|
|
||||||
COPY docker/php/Caddyfile /etc/caddy/Caddyfile
|
COPY docker/php/Caddyfile /etc/caddy/Caddyfile
|
||||||
|
|
||||||
# Entrypoint : warmup au démarrage du conteneur, quand .env.local est monté
|
# Le code source et vendor/ sont injectés par volume mount (./backend:/app)
|
||||||
|
# Le cache warmup nécessite .env.local → fait au démarrage, pas au build
|
||||||
COPY docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh
|
COPY docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user