Retour au blog
Docker

Docker dans les pipelines CI/CD

05 Apr 2024 9 min
Docker CI/CD DevOps

Docker et l'intégration continue

Docker est devenu incontournable dans les pipelines CI/CD modernes. Il garantit la cohérence entre les environnements de test et de production.

Pipeline GitHub Actions avec Docker

name: CI/CD Pipeline
on:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build test image
        run: docker build --target test -t app:test .
      - name: Run tests
        run: docker run app:test php bin/phpunit

  build-and-push:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build production image
        run: docker build --target production -t app:latest .
      - name: Push to registry
        run: |
          echo "$REGISTRY_TOKEN" | docker login -u user --password-stdin
          docker push app:latest

Optimisation du cache

Le cache des couches Docker est crucial pour la vitesse du pipeline :

- name: Set up Docker Buildx
  uses: docker/setup-buildx-action@v3
- name: Build with cache
  uses: docker/build-push-action@v5
  with:
    cache-from: type=gha
    cache-to: type=gha,mode=max

Tests en parallèle

  • Utilisez Docker Compose pour lancer les services de test (DB, Redis)
  • Parallélisez les suites de tests dans des conteneurs séparés
  • Nettoyez les ressources après chaque exécution

Cette stratégie permet de réduire le temps de déploiement de 30 minutes à moins de 5 minutes.