ci with frankenPhp
Laravel CI-CD (Gitea) / Tests Unitaires (push) Successful in 15s Details
Laravel CI-CD (Gitea) / Build & Push Docker (push) Failing after 11s Details
Laravel CI-CD (Gitea) / Déploiement Simplifié (push) Has been skipped Details

This commit is contained in:
Leon 2026-03-13 10:27:30 +01:00
parent a9c267e878
commit ef7f566acf
2 changed files with 43 additions and 35 deletions

View File

@ -1,36 +1,40 @@
FROM laravelsail/php84-composer AS build # --- Étape de Build ---
FROM composer:2.7 AS build
WORKDIR /var/www/html WORKDIR /var/www/html
COPY . . COPY . .
RUN apt-get update && apt-get install -y libicu-dev \
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl
RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
FROM laravelsail/php84-composer # --- Étape Finale (Production) ---
FROM dunglas/frankenphp:1.3-php8.4-alpine
# Installation des dépendances système pour Postgres et GD
RUN apk add --no-cache \
libpq-dev \
libpng-dev \
libjpeg-turbo-dev \
freetype-dev \
icu-dev
# Installation des extensions PHP
RUN install-php-extensions \
intl \
pdo_pgsql \
gd \
zip \
opcache
WORKDIR /var/www/html WORKDIR /var/www/html
RUN apt-get update && apt-get install -y \ # Copie des fichiers depuis le build
libicu-dev \
libpq-dev \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
file \
&& docker-php-ext-configure intl \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install intl pdo_pgsql gd fileinfo \
&& docker-php-ext-enable pdo_pgsql gd fileinfo
COPY --from=build /var/www/html /var/www/html COPY --from=build /var/www/html /var/www/html
RUN php artisan storage:link # Variables d'environnement pour Laravel
ENV APP_ENV=production
ENV APP_RUNTIME=Laravel\FrankenPHP\Runtime
ENV MAX_REQUESTS=500
ENTRYPOINT [] # Droits d'accès pour le stockage
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache
EXPOSE 80 # Commande de démarrage
CMD ["sh", "-c", "php artisan migrate --force && php artisan storage:link && frankenphp run --config /etc/caddy/Caddyfile"]
CMD ["sh", "-c", "php artisan migrate --force && php artisan serve --host=0.0.0.0 --port=80"]

View File

@ -1,18 +1,21 @@
services: services:
starter-api: starter-api:
# REMPLACE par ton URL Gitea réelle build:
image: gitea.leonmorival.com/leon-morival/laravel-starter:latest context: .
dockerfile: Dockerfile
container_name: starter-starter-api-1
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
pgsql: pgsql:
condition: service_healthy condition: service_healthy
ports: # ports: <--- Supprimé pour la sécurité, NPM s'en occupe
- "8002:80" # - "8002:80"
environment: environment:
APP_ENV: "production" # Changé de local à production APP_ENV: "production"
APP_KEY: "${APP_KEY}" APP_KEY: "${APP_KEY}"
APP_URL: "${APP_URL}" APP_URL: "${APP_URL}"
APP_DEBUG: "false" # Sécurité : false en prod APP_RUNTIME: "Laravel\\FrankenPHP\\Runtime" # <-- AJOUTÉ pour FrankenPHP
APP_DEBUG: "false"
FILESYSTEM_DISK: "public" FILESYSTEM_DISK: "public"
DB_CONNECTION: "pgsql" DB_CONNECTION: "pgsql"
DB_HOST: "pgsql" DB_HOST: "pgsql"
@ -28,16 +31,17 @@ services:
- internal - internal
pgsql: pgsql:
image: postgres:15-alpine # Attention: postgres 18 n'existe pas encore (17 max), 15 est stable image: postgres:18-alpine
container_name: starter-pgsql-1
restart: unless-stopped restart: unless-stopped
environment: environment:
POSTGRES_DB: "${DB_DATABASE}" POSTGRES_DB: "${DB_DATABASE}"
POSTGRES_USER: "${DB_USERNAME}" POSTGRES_USER: "${DB_USERNAME}"
POSTGRES_PASSWORD: "${DB_PASSWORD}" POSTGRES_PASSWORD: "${DB_PASSWORD}"
volumes: volumes:
- pgsql-data:/var/lib/postgresql/data # Ajout de /data pour la persistance correcte - pgsql-data:/var/lib/postgresql/data
ports: # ports: <--- Tu peux aussi le supprimer si tu n'as pas besoin d'y accéder depuis ton PC (DBeaver/TablePlus)
- "5428:5432" # - "5428:5432"
healthcheck: healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${DB_USERNAME} -d ${DB_DATABASE}" ] test: [ "CMD-SHELL", "pg_isready -U ${DB_USERNAME} -d ${DB_DATABASE}" ]
interval: 5s interval: 5s