为什么“docker compose.yml”中指定的参数在“docker compose run”的“docker compose File”中可用,而在“docker compose build”中不可用?

为什么“docker compose.yml”中指定的参数在“docker compose run”的“docker compose File”中可用,而在“docker compose build”中不可用?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,Docker和Compose相对较新,但我已经阅读了Docker Compose文档中的每一封信,几个小时都没有找到解决上述问题的方法,但都没有成功 我有一个(示例)目录,其中包含以下文件: /Dockerfile: # syntax=docker/dockerfile:1 ARG CUSTOM_NODE_VERSION FROM node:$CUSTOM_NODE_VERSION ARG CUSTOM_NODE_VERSION ARG HELLO RUN echo "HELLO

Docker和Compose相对较新,但我已经阅读了Docker Compose文档中的每一封信,几个小时都没有找到解决上述问题的方法,但都没有成功

我有一个(示例)目录,其中包含以下文件:

/Dockerfile

# syntax=docker/dockerfile:1
ARG CUSTOM_NODE_VERSION

FROM node:$CUSTOM_NODE_VERSION

ARG CUSTOM_NODE_VERSION
ARG HELLO

RUN echo "HELLO: -> $HELLO"
RUN echo "NODE_VERSION -> $NODE_VERSION"
RUN echo "CUSTOM_NODE_VERSION -> $CUSTOM_NODE_VERSION"
/docker compose.yml

版本:“3.8”
服务:
测试:
建造:
上下文:。
dockerfile:dockerfile
args:
自定义节点版本:alpine
你好:5
我想让
docker compose build
使用
docker compose.yml
文件中指定的
args
,但它不:

>docker编写构建测试
[+]建筑物0.8s(4/4)完工
=>[内部]从Dockerfile 0.1s加载生成定义
=>=>正在传输dockerfile:32B 0.0s
=>[内部]加载。dockerignore 0.0s
=>=>传输上下文:2B 0.0s
=>解析docker.io/docker/dockerfile的图像配置:10.5s
=>缓存的docker-image://docker.io/docker/dockerfile:1@sha256:e2a8561e419ab1ba6b2fe6cbdf49fd92b95912df1cf7d313c3e2 0.0s
未能解决:rpc错误:代码=未知描述=无法使用前端dockerfile解决。v0:无法使用前端网关解决。v0:rpc错误:代码=未知描述=无法创建LLB定义:无法分析阶段名称“节点:”:引用格式无效
但是
run
工作正常:

docker编写运行测试
[+]运行1/1
⠿ 网络合成-args\u默认创建4.3s
[+]建筑3.1s(10/10)完工
=>[内部]从Dockerfile 0.0s加载生成定义
=>=>正在传输dockerfile:32B 0.0s
=>[内部]加载。dockerignore 0.0s
=>=>传输上下文:2B 0.0s
=>解析docker.io/docker/dockerfile的图像配置:10.5s
=>缓存的docker-image://docker.io/docker/dockerfile:1@sha256:e2a8561e419ab1ba6b2fe6cbdf49fd92b95912df1cf7d313c3e2 0.0s
=>[内部]加载docker.io/library/node的元数据:alpine 1.0s
=>从docker.io/library/node缓存[1/4]:alpine@sha256:F372A9FFCEC27159DC9623BAD2997A1B61EAFBB145DBF4F7A64568B 0.0s
=>[2/4]运行echo“HELLO:->5”0.5s
=>[3/4]运行echo“节点\u版本->16.3.0”0.3s
=>[4/4]运行echo“自定义节点版本->alpine”0.5s
=>导出到图像0.1s
=>=>导出图层0.0s
=>=>写入图像sha256:E61653277599E3555B67C1A50699DD83D5C1ED1A93FE8A16529C6EC20E31 0.0s
=>=>命名为docker.io/library/compose-args\u test
这让我更加困惑,因为:

args

添加生成参数,这些参数是仅在生成过程中可访问的环境变量


非常感谢任何帮助构建args。最有可能的是,更改尚未达到您正在运行的
docker compose
版本。您可以使用
docker compose build
(带有
-
)直到此功能到达您的安装位置。

谢谢您的回答。我不知道有什么不同-我假设
docker compose
docker compose
是彼此的别名。你知道有什么文档可以解释这种差异吗?@g_t_m
docker compose
是一个新项目,目前仍在开发功能奇偶校验
docker compose
是位于的原始python实现。由于compose cli正在积极开发中,因此最好检查repo以查看缺少了什么或何时添加了功能,以及是否安装了该版本。