web-dev-qa-db-fra.com

Passer l'argument au docker composer

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

14
deeptowncitizen

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
9
dzof31

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
3
blueandhack

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>

2
Lars

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
1
sbzoom

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

0
joshmcode