我写了一个Dockerfile
使用两个参数的:
FROM jessie
MAINTAINER Zeinab Abbasimazar
#Build Arguments
ARG REP_USER
ARG REP_PASS
# Build
RUN echo 'REP_USER:'$REP_USER', REP_PASS:'$REP_PASS
我写了一个docker-compose.yml
for build:
version: "2"
services:
ui:
build:
context: .
dockerfile: Dockerfile
args:
REP_USER: $REP_USER
REP_PASS: $REP_PASS
我不想直接在compose文件中定义这些参数,因此我尝试在docker compose构建期间发送它们:
REP_USER=myusername REP_PASS=mypassword docker-compose build
哪个没有用。我更改Dockerfile
为将这些参数用作环境变量。所以我删除了几ARG
行:
FROM jessie
MAINTAINER Zeinab Abbasimazar
# Build
RUN echo 'REP_USER:'$REP_USER', REP_PASS:'$REP_PASS
和docker-compose.yml
:
version: "2"
services:
ui:
build:
context: .
dockerfile: Dockerfile
跑了REP_USER=myusername REP_PASS=mypassword docker-compose build
; 仍然没有结果。
我还尝试将这些信息保存到env
文件中:
version: "2"
services:
ui:
build:
context: .
dockerfile: Dockerfile
env_file:
- myenv.env
但是,似乎env
文件在构建时不会受到影响。他们只是参与运行时间。
编辑1:
Docker版本1.12.6
不支持使用传递参数--build-arg
。
编辑2:
我尝试.env
按照此处所述使用文件:
cat .env
REP_USER=myusername
REP_PASS=mypassword
然后我打电话给docker-compose config
哪个返回:
networks: {}
services:
ui:
build:
args:
REP_PASS: mypassword
REP_USER: myusername
context: /home/zeinab/Workspace/ZiZi-Docker/Test/test-exec-1
dockerfile: Dockerfile
version: '2.0'
volumes: {}
这意味着这解决了我的问题。
编辑3:
我也尝试过的第三部分泊坞窗,撰写ARG文件在我的docker-compose.yml
文件:
version: "2"
services:
ui:
build:
context: .
dockerfile: Dockerfile
args:
- REP_USER
- REP_PASS
并执行:
export REP_USER=myusername;export REP_PASS=mypassword;sudo docker-compose build --no-cache
仍然没有得到我想要的。
我终于找到了解决方案。我在问题中也提到了它。我首先尝试失败,然后发现我有一个错字命名.env
文件。是.evn
。
我尝试.env
按照此处所述使用文件:
cat .env
REP_USER=myusername
REP_PASS=mypassword
然后我打电话给docker-compose config
哪个返回:
networks: {}
services:
ui:
build:
args:
REP_PASS: mypassword
REP_USER: myusername
context: /home/zeinab/Workspace/ZiZi-Docker/Test/test-exec-1
dockerfile: Dockerfile
version: '2.0'
volumes: {}
我需要在Dockerfile中传递环境变量,如下所示。我可以知道做这件事的有效方法吗。我尝试使用构建参数 但它没有用。 这是我的 Dockerfile 所以当我运行我的docker容器时,我相信我不想向它发送任何环境变量。 请指教。
我正在尝试将服务器URL传递给在Docker容器中运行的React应用程序。它在应用程序中发送HTTP请求时使用,访问方式如下:server_url。这在主机上存储为en环境变量。 我尝试过直接在我的does文件中设置变量:< code > ENV server _ URL = $ { server _ URL } ,我认为这不起作用,因为< code>${server_url}是针对does文件
在构建docker映像时,可以将环境变量作为文件传递给Dockerfile吗? 我按照这里的建议使用了,但由于我有多个参数,我更喜欢使用一个文件。 我也尝试使用方法,但我需要在构建时添加这些参数。 提前感谢。
问题内容: docker-compose.yml: Dockerfile: 结果是: 我ing不休,为什么这不起作用。如果更改节点版本号,则该数字也会更改。 问题答案: 在compose文件上定义的参数在Dockerfile上可用,但仅在之前和之上可用。在参数不可用之后: 在a之前的声明位于构建阶段之外,因此不能在以后的任何指令中使用它。- 来自docker docs 为什么论点起作用? 。之后的
问题内容: 如何将主机环境变量(例如用户名和主机名)传递给dockerfile? 例如,如果我的用户名是: 如何编写Docker文件以获得相同的输出? 问题答案: 我遇到了同样的问题。我的解决方案是在docker-compose.yml内部提供变量,因为yml支持使用环境变量。 我认为这对我来说是最有效的方式,因为我不喜欢在命令行中使用类似以下内容一遍又一遍地键入它 在容器中,声明将无效,将设置为
我已经查看了我们可以在通过dockerfile构建docker映像的同时通过cmd行传递ENV变量吗?这向我展示了如何使用传递环境变量。在看到没有定义环境变量后,我查看了传递环境变量不适用于Docker,但这涉及通过传递环境变量。 这是我的: 和< code>docker build命令: 结果输出: 然而的输出是: 我错过了什么?