it-swarm.com.de

Übergeben Sie das Argument an das Andockgerät

In meiner Docker-Compose-Datei gibt es ein dynamisches Feld, das ich während des Laufs generieren möchte. Eigentlich ist es eine Stringvorlage:

environment:
    - SERVER_URL:https://0.0.0.0:${PORT}

Und ich möchte diesen PORT-Parameter dynamisch konfigurieren

docker-compose run <service> PORT=443

In documentation gibt es ARGS-Parameter, die ich verwenden kann. Es gibt jedoch keine Informationen, wie ich diese in compose-Datei verwenden kann

14
deeptowncitizen

In Docker-Compose sind Argumente verfügbar und nur in dockerfile nützlich. Sie können festlegen, was Sie in der nächsten Ebene tun, wie folgt:

#dockerfile
ARG PORT
ENV SERVER_URL "https://0.0.0.0:$PORT"

Ihr Port kann in Ihrer Docker-compose.yml festgelegt werden:

build:
  context: .
  args:
    - PORT=443

Es ist in jedem Fall eine Umgebungsvariable. Sie können es durch Ihren Befehl ausführen, wenn dies zu Ihnen passt:

PORT=443 docker-compose run <service>
#or
docker-compose run <service> -e PORT=443
9
dzof31

Sie können das Flag verwenden, wenn Sie Docker-Compose-Build verwenden

docker-compose build --build-arg PRODUCTION=VALUE

In Dockerfile erhalten Sie das Argument PRODUCTION

# Dockerfile
ARG PRODUCTION
FROM node:latest
3
blueandhack

Siehe diese Antwort . Sie können es so machen: PORT=433 docker-compose <command>

Sie können sogar mehrere Werte angeben: PORT=433 MYIP='192.168.123.456' docker-compose <command>

2
Lars

In Docker-Compose gibt es eine Variablensubstitution.

https://docs.docker.com/compose/compose-file/#variable-substitution

docker-compose -e PORT 443 -f docker-compose.yml
1
sbzoom

Dies ist möglich mit stack deploy

Beispiel zum Erstellen einer Datei in Ihrem Umgebungsabschnitt:

- MY_VARIABLE_NAME=${MY_VARIABLE_VALUE}

Stack Deploy-Befehl (ich habe dies von Gitbash in Windows ausgeführt):

MY_VARIABLE_VALUE=some-value docker stack deploy --compose-file compose_file_here stackname


Reference Siehe diesen Github-Beitrag hier

0
joshmcode