我有一些环境变量,想要在
我尝试将
我也尝试过:
这是运行
docker-compose
配置文件和Dockerfile
中使用。我有一个名为.env
的环境文件,以便在docker-compose
文件中使用它们(这是我在这个问题上使用的解决方案); 但是这些环境变量在node的Dockerfile
中不可用。将JMX_PORT
、WS_PORT
和IP
视为在我的.env
文件中定义的变量;我在Dockerfile
中为每个变量添加了一个echo
,以检查它们是否传递到其中。我尝试将
.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}"
以上方法都无法解决问题。
我不想在另一个文件中重新定义它们。有没有其他解决方案?
编辑 1:
这是我的Dockerfile
:
FROM mybaseimage
MAINTAINER Zeinab Abbasimazar
RUN echo ${IP}
RUN echo ${JMX_PORT}
RUN echo ${WS_PORT}
EDIT 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