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 也应该有效。