如何在docker-compose.yml中传递带有远程映像的构建参数?

如何在docker-compose.yml中传递带有远程映像的构建参数?,docker,docker-compose,Docker,Docker Compose,我想从私有注册表中提取远程映像。图像的dockerfile包含一些参数,这些参数的值将通过docker-compose.yml填充。例如: version: '3.0' services: api: image: remoteApiImage web: image: remoteWebImage build: args: baseurl: http://remoteApiI

我想从私有注册表中提取远程映像。图像的dockerfile包含一些参数,这些参数的值将通过docker-compose.yml填充。例如:

version: '3.0'

services:
    api:
        image: remoteApiImage
    web:
        image: remoteWebImage
        build: 
            args:
                baseurl: http://remoteApiImage:80
目前,这不起作用,因为构建需要上下文。但是,如果我设置了一个上下文,它需要一个本地Dockerfile。甚至设置为。如果没有本地Dockerfile,则会拉取远程映像,但未正确传递生成参数

这可能吗


注意:我使用的是Windows Server 2016容器。不确定这是否与问题相关

正如Johnharis85的评论所暗示的,你试图做的是不可能的。您不能在没有
Dockerfile
的情况下,先提取图像,然后重建它

如果您试图为一个图像指定参数,那么可以通过环境变量对此进行修改。否则,如果您拥有图像的源
Dockerfile
,则可以使用
ARG
函数在自己重新构建图像时指定参数


docker compose.yml
上下文中的
build
image
是相互排斥的。

如果对这个问题感到困惑,是否将build args传递给build?您试图将生成参数传递给已生成的映像?您是指常规的
env
变量吗?这可能更有意义,但有一点:注意:如果您的服务指定了一个构建选项,则在构建过程中,环境中定义的变量将不会自动可见。使用build的args子选项定义构建时环境变量。这似乎与你想做的事情无关。您可以使用预构建的映像并将环境变量传递给它(如果允许),或者如果需要操作构建参数,则需要使用它的Dockerfile并自己构建映像。这是正确的。但是请注意,build和image可以一起使用:“如果您指定image和build,那么使用webapp和image中指定的可选标记组合生成的映像的名称”