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 關注
- 157 瀏覽
添加回答
舉報