Docker & Docker Compose — Maîtriser la containerisation
Docker a révolutionné le déploiement d'applications en résolvant le problème historique : "Ça marche sur ma machine !"
Multi-stage build (pour Laravel/PHP)
# Stage 1 : Build des assets
FROM node:20-alpine AS assets
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY resources/ resources/
RUN npm run build
# Stage 2 : Application PHP
FROM php:8.3-fpm-alpine AS app
RUN docker-php-ext-install pdo pdo_mysql opcache bcmath
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY composer.json composer.lock ./
RUN composer install --no-dev --no-autoloader
COPY . .
COPY --from=assets /app/public/build public/build
RUN composer dump-autoload --optimize
USER www-data
CMD ["php-fpm"]
Docker Compose — Stack complète
version: '3.9'
services:
app:
build: { context: ., target: app }
depends_on:
db: { condition: service_healthy }
nginx:
image: nginx:1.25-alpine
ports: ["80:80", "443:443"]
db:
image: mariadb:11
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_DATABASE}
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect"]
interval: 10s
redis:
image: redis:7-alpine
volumes:
db-data:
Commandes essentielles
docker-compose up -d
docker-compose exec app php artisan migrate
docker-compose logs -f app
docker system prune -f
Aucun commentaire pour le moment.