Docker compose build args 未传递给 dockerfile
Docker compose build args are not passed to dockerfile
我有一个 docker 组合文件,可以在本地构建和 运行 几个 docker 文件。我正在使用多阶段构建,并将一个参数传递到我的 docker 构建命令中。以下完美运行:
docker build -t local/admin-api --build-arg SONAR_TOKEN=XXXXXXXXXXXXXXX .
我正在尝试在我的 docker 撰写文件中复制它:
services:
comply:
build:
context: ./websites/comply/
dockerfile: Dockerfile
args:
SONAR_TOKEN: xxxxxxxxxxx
ports:
- "8080:80"
在我的 docker 文件中,我使用:
FROM kinectify.azurecr.io/buildbase:ci-631 as build
ARG PAT
ARG SONAR_PROJECT_KEY=xxxxxxx
ARG SONAR_ORGANIZATION_KEY=xxxxxxx
ARG SONAR_HOST_URL=https://sonarcloud.io
ARG SONAR_TOKEN
RUN echo "Token: ${SONAR_TOKEN} | hostURL: ${SONAR_HOST_URL}"
我知道构建参数的范围,正如您在上面看到的,参数是在我的 FROM 语句之后定义的。我也尝试过将 arg 设置为环境变量,但这似乎并不重要。此外,SONAR_HOST_URL 正在 echo 语句中正确输出(并且在我实际使用参数的地方)。我正在 运行 构建:
docker compose build comply
** 更新**
奇怪的是,当我 运行 docker compose up -d --build
它确实传递了变量。不过我不确定有什么区别。
这是一个 been fixed in docker compose 的已知问题。您可能仍在等待下一个版本。在等待该版本时,使用 docker-compose
而不是 docker compose
也应该有效。
我有一个 docker 组合文件,可以在本地构建和 运行 几个 docker 文件。我正在使用多阶段构建,并将一个参数传递到我的 docker 构建命令中。以下完美运行:
docker build -t local/admin-api --build-arg SONAR_TOKEN=XXXXXXXXXXXXXXX .
我正在尝试在我的 docker 撰写文件中复制它:
services:
comply:
build:
context: ./websites/comply/
dockerfile: Dockerfile
args:
SONAR_TOKEN: xxxxxxxxxxx
ports:
- "8080:80"
在我的 docker 文件中,我使用:
FROM kinectify.azurecr.io/buildbase:ci-631 as build
ARG PAT
ARG SONAR_PROJECT_KEY=xxxxxxx
ARG SONAR_ORGANIZATION_KEY=xxxxxxx
ARG SONAR_HOST_URL=https://sonarcloud.io
ARG SONAR_TOKEN
RUN echo "Token: ${SONAR_TOKEN} | hostURL: ${SONAR_HOST_URL}"
我知道构建参数的范围,正如您在上面看到的,参数是在我的 FROM 语句之后定义的。我也尝试过将 arg 设置为环境变量,但这似乎并不重要。此外,SONAR_HOST_URL 正在 echo 语句中正确输出(并且在我实际使用参数的地方)。我正在 运行 构建:
docker compose build comply
** 更新**
奇怪的是,当我 运行 docker compose up -d --build
它确实传递了变量。不过我不确定有什么区别。
这是一个 been fixed in docker compose 的已知问题。您可能仍在等待下一个版本。在等待该版本时,使用 docker-compose
而不是 docker compose
也应该有效。