我有一些環境變量,我想在docker-compose
配置和Dockerfile
中使用。我有一個名爲.env
的環境文件,以便在docker-compose
文件(我用於this issue的解決方案)中使用它們;但是這些環境變量在節點的Dockerfile
中無法訪問。考慮將JMX_PORT
,WS_PORT
和IP
作爲在我的.env
文件中定義的變量;我在我的Dockerfile
中爲它們中的每個人都放了一個echo
,以檢查它們是否被傳遞給它。docker-compose使用來自.env文件的環境變量
我試圖把.env
在節點的env_file
部分:
version: "2"
services:
mynode:
build:
context: .
dockerfile: Dockerfile-mynode
env_file:
- .env
ports:
- "${JMX_PORT}:${JMX_PORT}"
- "${WS_PORT}:${WS_PORT}"
我也試過:
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}"
並配有小變化:
version: "2"
services:
mynode:
build:
context: .
dockerfile: Dockerfile-mynode
environment:
- IP
- JMX_PORT
- WS_PORT
ports:
- "${JMX_PORT}:${JMX_PORT}"
- "${WS_PORT}:${WS_PORT}"
的無上述方法奏效。
我不想在另一個文件中重新定義它們。有沒有解決方案?
EDIT 1:
這是我的Dockerfile
:
FROM mybaseimage
MAINTAINER Zeinab Abbasimazar
RUN echo ${IP}
RUN echo ${JMX_PORT}
RUN echo ${WS_PORT}
編輯2:
這是docker-compose config
命令的,這意味着所述docker-compose
訪問到環境中的輸出如預期的變量:
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: {}
這是docker-compose build --no-cache
命令,它意味着Dockerfile
沒有按預期訪問的環境變量的輸出:
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
安置自己的Dockerfile也 –
@TarunLalwani,我已經編輯我的問題。請再次查看。 –