【发布时间】:2018-02-11 18:47:49
【问题描述】:
我有一些环境变量要在docker-compose 配置和Dockerfile 中使用。我有一个名为.env 的环境文件,以便在docker-compose 文件中使用它们(我用于this issue 的解决方案);但是在节点的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}
编辑 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,我已经编辑了我的问题。请再查看一次。
标签: docker environment-variables docker-compose dockerfile environment