Avec une application Spring Boot, nous utilisons le fichier application.yml pour stocker les propriétés. J'ai une tâche pour donner à un utilisateur la possibilité de remplacer certaines propriétés lors du démarrage d'une application. Prenant en considération que nous avons dockerised notre fichier de docker-composer d'application est l'endroit très juste que je crois pour cela. J'ai trouvé une option qui fonctionne réellement, env_file:propriétés de l'application override-composer override
backend:
build:
context: backend
dockerfile: Dockerfile.backend
restart: always
ports:
- 3000:3000
env_file:
- backend/custom.env
volumes:
- ../m2_repo:/root/.m2/
- ../{APP_NAME}/data_sources:/backend/data_sources/
links:
- database
networks:
main:
aliases:
- backend
Cela résout parfaitement ma tâche et toutes les paires CLEF = valeur Remplace existante dans application.yml propriétés. Cependant, j'ai 2 questions:
Il est apparu que plusieurs services ayant dans mon dossier docker-Compose je dois spécifier un env_file pour chaque service, ce qui est sans doute pas très pratique. Est-il possible d'avoir un fichier env_file commun pour l'ensemble du fichier docker-composer?
Je sais que pour la commande d'exécution docker-compose, il y a une option -e où je peux mettre des paires clé = valeur de variables env. Y at-il une option similaire pour docker-composer? Je veux dire pour ne pas utiliser env_file du tout.
Pourquoi est-1) un problème ? Est-ce que tous vos services requièrent les mêmes propriétés? N'y a-t-il pas de chevauchement si vous utilisez un fichier env_file commun? –
Ce n'est pas un problème, je cherche plutôt une option. Mes propriétés ne se chevauchent pas, c'est pourquoi je considère avoir un seul fichier env plutôt que plusieurs fichiers (un pour chaque service) – Viacheslav