🐳 Transition vers containers — Askem
La transition vers les containers permet grâce à Askem d’assurer la portabilité, la stabilité et la scalabilité de ses environnements de développement et de production. En s’appuyant sur Docker et Docker Compose, cette démarche unifie les pratiques internes et facilite la collaboration entre les équipes projets, notamment sur les instances Drupal, CKAN, Superset ou encore les microservices internes.
Principes généraux
- Isolation : chaque application (Drupal, PostgreSQL, Redis, Solr, etc.) tourne potentiellement dans un container indépendant.
- Interopérabilité : les environnements sont alignés avec le cluster Rancher/Kubernetes.
- Reproductibilité : tout développeur peut cloner et lancer une instance locale avec docker compose up.
- Automatisation : des scripts assurent les tâches répétitives (init, mise à jour, synchro, etc.).
- Séparation : code, volumes de données et paramètres d’environnement sont distincts.
Nous accompagnos nos clients dans la transformation de leurs applicatifs vers des images docker
🧩 Exemple : instance Drupal containerisée
project-root/
├── docker-compose.yml
├── drupal/
│   ├── Dockerfile
│   ├── web/
│   │   └── (code Drupal)
│   ├── scripts/
│   │   ├── install.sh
│   │   ├── update.sh
│   │   └── sync-local.sh
├── db/
│   └── Dockerfile
├── .env
└── README.md
    
    Extrait du docker-compose.yml :
services:
  drupal:
    build: ./drupal
    ports:
      - "8080:80"
    environment:
      - DRUPAL_DB_HOST=db
      - DRUPAL_DB_NAME=drupal
      - DRUPAL_DB_USER=drupal
      - DRUPAL_DB_PASSWORD=drupal
    volumes:
      - ./drupal/web:/var/www/html:delegated
      - ./drupal/config:/opt/config
      - ./drupal/modules:/var/www/html/modules/custom
      - ./drupal/themes:/var/www/html/themes/custom
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      - POSTGRES_DB=drupal
      - POSTGRES_USER=drupal
      - POSTGRES_PASSWORD=drupal
    volumes:
      - drupal_data:/var/lib/postgresql/data
volumes:
  drupal_data:
    
    Montages pour le développement local
| Répertoire local | Monté dans le container | Usage | 
|---|---|---|
| ./drupal/web | /var/www/html | Code source principal | 
| ./drupal/modules | /var/www/html/modules/custom | Modules personnalisés | 
| ./drupal/themes | /var/www/html/themes/custom | Thèmes Drupal | 
| ./drupal/config | /opt/config | Configuration import/export | 
| ./logs | /var/log/apache2 | Logs d’exécution | 
| .env | Variables injectées | Configuration environnementale | 
Procédures de mise à jour
- Mise à jour du code : git pull && docker compose build drupal && docker compose up -d
- Dépendances : docker compose exec drupal composer install && drush updb -y && drush cr
- Configuration : drush config:export -y/config:import -y
- Backup : docker compose exec db pg_dump -U drupal drupal > backup.sql
Scripts de facilitation
| Script | Description | 
|---|---|
| install.sh | Installe une instance Drupal neuve | 
| update.sh | Met à jour dépendances et configuration | 
| sync-local.sh | Synchronise la base et les médias depuis la préprod | 
| reset.sh | Réinitialise un environnement local | 
| build-all.sh | Reconstruit tous les containers | 
Intégration CI/CD
Les pipelines GitLab utilisent les mêmes images Docker que les environnements locaux. Le déploiement est orchestré via Helm sur le cluster Rancher, avec publication automatique sur le registry de votre choix.
Sécurité et maintenance
- Secrets gérés via .envet Vault Kubernetes.
- Nettoyage automatique des containers inactifs.
- Mises à jour régulières des images.
- Analyse de vulnérabilité automatisée (Trivy en CI/CD).
- Backups automatiques des volumes Docker.
- Intégration des modules préconfigurés (composer.json).
