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.