Ich habe einige Umgebungsvariablen, die ich sowohl in docker-compose
Konfigurationen und Dockerfile
verwenden möchte. Ich habe eine Umgebungsdatei namens .env
, um sie in docker-compose
Datei zu verwenden (eine Lösung, die ich für this issue verwendet habe); aber diese Umgebungsvariablen sind in Dockerfile
des Knotens nicht erreichbar. Betrachten Sie JMX_PORT
, WS_PORT
und IP
als Variablen, die in meiner .env
Datei definiert sind; Ich habe eine echo
für jeden von ihnen in meinem Dockerfile
, um zu überprüfen, ob sie an sie weitergegeben werden oder nicht.docker-komponieren verwenden Umgebungsvariablen von .env-Datei
Ich versuchte .env
im env_file
Abschnitt des Knotens zu setzen:
version: "2"
services:
mynode:
build:
context: .
dockerfile: Dockerfile-mynode
env_file:
- .env
ports:
- "${JMX_PORT}:${JMX_PORT}"
- "${WS_PORT}:${WS_PORT}"
ich auch versucht:
version: "2"
services:
mynode:
build:
context: .
dockerfile: Dockerfile-mynode
environment:
- IP=${IP}
- JMX_PORT=${JMX_PORT}
- WS_PORT=${WS_PORT}
ports:
- "${JMX_PORT}:${JMX_PORT}"
- "${WS_PORT}:${WS_PORT}"
Und mit einer wenig Änderung:
version: "2"
services:
mynode:
build:
context: .
dockerfile: Dockerfile-mynode
environment:
- IP
- JMX_PORT
- WS_PORT
ports:
- "${JMX_PORT}:${JMX_PORT}"
- "${WS_PORT}:${WS_PORT}"
Keines Die obigen Ansätze haben funktioniert.
Ich möchte sie nicht in einer anderen Datei neu definieren. Gibt es dafür eine Lösung?
EDIT 1:
Das ist mein Dockerfile
:
FROM mybaseimage
MAINTAINER Zeinab Abbasimazar
RUN echo ${IP}
RUN echo ${JMX_PORT}
RUN echo ${WS_PORT}
EDIT 2:
Dies ist die Ausgabe von docker-compose config
Befehl, der die docker-compose
Zugriff auf die Umwelt hat, impliziert Variablen wie erwartet:
services:
mynode:
build:
context: /home/zeinab/Workspace/ZiZi-Docker/Test/test-1
dockerfile: Dockerfile-WRCore
environment:
IP: 171.80.80.80
JMX_PORT: '1998'
WS_PORT: '9000'
ports:
- 1998:1998
- 9000:9000
version: '2.0'
volumes: {}
Und das ist der Ausgang des docker-compose build --no-cache
Befehl, der die Dockerfile
impliziert keinen Zugriff auf die Umgebungsvariablen wie erwartet:
docker-compose build --no-cache
Building mynode
Step 1 : FROM mybaseimage
---> 875978d91e2e
Step 2 : MAINTAINER Zeinab Abbasimazar
---> Running in 250eac87d078
---> 0e7bd6a18c80
Removing intermediate container 250eac87d078
Step 3 : RUN echo ${IP}
---> Running in 4ee6dbf74b2a
---> fd2bff1de6b6
Removing intermediate container 4ee6dbf74b2a
Step 4 : RUN echo ${JMX_PORT}
---> Running in 01245df43926
---> 68b7e90b1c01
Removing intermediate container 01245df43926
Step 5 : RUN echo ${WS_PORT}
---> Running in d27db926ecac
---> a8c3d0cbade8
Removing intermediate container d27db926ecac
Successfully built a8c3d0cbade8
Post Dockerfile auch –
@TarunLalwani ist, ich meine Frage bearbeitet haben. Bitte überprüfen Sie noch einmal. –