Linux & Serveurs

Docker & Docker Compose — Maîtriser la containerisation

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

// Commentaires (0)

Connectez-vous pour laisser un commentaire.

Aucun commentaire pour le moment.