Utiliser Compose en production
Quand vous définissez votre application avec Compose en développement, vous pouvez utiliser cette définition pour exécuter votre application dans différents environnements tels que CI, staging et production.
La façon la plus facile de déployer une application est de l'exécuter sur un seul serveur, similaire à la façon dont vous exécuteriez votre environnement de développement. Si vous voulez faire évoluer votre application, vous pouvez exécuter des applications Compose sur un cluster Swarm.
Modifier votre fichier Compose pour la production
Vous pourriez avoir besoin d'apporter des modifications à la configuration de votre application pour la rendre prête pour la production. Ces modifications pourraient inclure :
- Supprimer toutes les liaisons de volume pour le code d'application, pour que le code reste à l'intérieur du conteneur et ne puisse pas être changé de l'extérieur
- Se lier à différents ports sur l'hôte
- Définir les variables d'environnement différemment, comme réduire la verbosité de la journalisation, ou pour spécifier les paramètres pour des services externes tels qu'un serveur de messagerie
- Spécifier une politique de redémarrage comme
restart: always
pour éviter les temps d'arrêt - Ajouter des services supplémentaires tels qu'un agrégateur de journaux
Pour cette raison, considérez définir un fichier Compose supplémentaire, par exemple
compose.production.yaml
, qui spécifie une configuration appropriée à la production. Ce fichier de configuration ne doit inclure que les modifications que vous voulez apporter par rapport au fichier Compose original. Le fichier Compose supplémentaire
est ensuite appliqué par-dessus le compose.yaml
original pour créer une nouvelle configuration.
Une fois que vous avez un second fichier de configuration, vous pouvez l'utiliser avec l'option
-f
:
$ docker compose -f compose.yaml -f compose.production.yaml up -d
Voir Utiliser plusieurs fichiers compose pour un exemple plus complet, et d'autres options.
Déployer les changements
Quand vous apportez des modifications au code de votre application, n'oubliez pas de reconstruire votre image et
recréer les conteneurs de votre application. Pour redéployer un service appelé
web
, utilisez :
$ docker compose build web
$ docker compose up --no-deps -d web
Cette première commande reconstruit l'image pour web
puis arrête, détruit et recrée
juste le service web
. Le flag --no-deps
empêche Compose de également
recréer tous les services dont web
dépend.
Exécuter Compose sur un seul serveur
Vous pouvez utiliser Compose pour déployer une application vers un hôte Docker distant en définissant les
variables d'environnement DOCKER_HOST
, DOCKER_TLS_VERIFY
, et DOCKER_CERT_PATH
de manière appropriée. Pour plus d'informations, voir variables d'environnement prédéfinies.
Une fois que vous avez configuré vos variables d'environnement, toutes les commandes normales docker compose
fonctionnent sans configuration supplémentaire.