Dans mon fichier de composition de docker, il y a un champ dynamique que j'aimerais générer pendant l'exécution. En fait, il s’agit d’un modèle de chaîne:
environment:
- SERVER_URL:https://0.0.0.0:${PORT}
Et je veux configurer ce paramètre PORT
de manière dynamique
docker-compose run <service> PORT=443
Dans documentation il y a ARGS
paramètres définis je suppose que je peux utiliser. Mais il n'y a pas d'information sur comment puis-je utiliser ceux à l'intérieur du fichier de composition
Dans docker-compose, les arguments sont disponibles et utiles uniquement dans dockerfile
. Vous pouvez spécifier ce que vous faites dans le niveau à venir comme suit:
#dockerfile
ARG PORT
ENV SERVER_URL "https://0.0.0.0:$PORT"
Votre port peut être défini dans votre fichier docker-compose.yml:
build:
context: .
args:
- PORT=443
En réalité, il s’agit d’une variable d’environnement. Vous pouvez le transmettre via votre commande d'exécution si cela vous convient:
PORT=443 docker-compose run <service>
#or
docker-compose run <service> -e PORT=443
Vous pouvez utiliser l'indicateur lors de l'utilisation de la compilation docker-compose
docker-compose build --build-arg PRODUCTION=VALUE
Dans Dockerfile, vous pouvez obtenir l’argument PRODUCTION
# Dockerfile
ARG PRODUCTION
FROM node:latest
Voir cette réponse . Vous pouvez le faire comme ceci: PORT=433 docker-compose <command>
Vous pouvez même fournir plusieurs valeurs: PORT=433 MYIP='192.168.123.456' docker-compose <command>
Il y a substitution de variable dans Docker-Compose.
https://docs.docker.com/compose/compose-file/#variable-substitution
docker-compose -e PORT 443 -f docker-compose.yml
Ceci est possible avec stack deploy
Exemple de fichier de composition dans la section de votre environnement:
- MY_VARIABLE_NAME=${MY_VARIABLE_VALUE}
Commande Stack Deploy (j'ai exécuté ceci à partir de Gitbash sous Windows):
MY_VARIABLE_VALUE=some-value docker stack deploy --compose-file compose_file_here stackname
Référence Voir cet article de Github ici