2 回答
TA贡献2011条经验 获得超2个赞
您可以使用args来满足您的要求。
这里的一个注意事项是:您不应该使用USERin.env作为关键字,因为它将被 bash 的默认环境覆盖,USER这将使您的 dockerfile 无法获得正确的值。
一个完整可行的最小示例如下,仅供参考:
码头工人/服务器/Dockerfile:
FROM php:7.3-cli-alpine3.10
ARG USER
ARG PASSWORD
RUN echo ${USER}
RUN echo ${PASSWORD}
.env(注意:你必须使用 USR,而不是这里的 USER):
USR=user
PASSWORD=password
docker-compose.yaml:
version: '3'
services:
server:
build:
context: .
dockerfile: docker/Server/Dockerfile
args:
- USER=${USR}
- PASSWORD=${PASSWORD}
执行:
$ docker-compose build --no-cache
Building server
Step 1/5 : FROM php:7.3-cli-alpine3.10
---> 84d7ac5a44d4
Step 2/5 : ARG USER
---> Running in 86b35f6903e2
Removing intermediate container 86b35f6903e2
---> ee6a0e84c76a
Step 3/5 : ARG PASSWORD
---> Running in 92480327a820
Removing intermediate container 92480327a820
---> 1f886e8f6fbb
Step 4/5 : RUN echo ${USER}
---> Running in 8c207c7e6080
user
Removing intermediate container 8c207c7e6080
---> cf97b2cc0317
Step 5/5 : RUN echo ${PASSWORD}
---> Running in 7cbdd909826d
password
Removing intermediate container 7cbdd909826d
---> 6ab7987e080a
Successfully built 6ab7987e080a
Successfully tagged 987_server:latest
TA贡献1895条经验 获得超3个赞
这里的问题是您ENV
只能从运行阶段访问而不是build
.
我建议你使用 buildargs
例如:
build: context: . args: buildno: 1 gitcommithash: cdc3b19
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报