我如何和docker一起传递一个论点 – 组合起来

我有一个docker-compose.yml文件,在terminal中我typing docker-compose up [something]docker-compose.yml typing docker-compose up [something]但是我也想把一个parameter passing给docker-compose.yml 。 这可能吗? 我已经阅读了插值variables,试图在.yml文件中使用${testval}指定一个variables,然后${testval} docker-compose up [something] var="test"但是我收到以下错误:

警告:testvalvariables未设置。 默认为空白string。
错误:没有这样的服务: testval=test

基于dnephin的回答 ,我创build了这个样本库 ,可以将一个variables传递给docker-compose。

用法很简单:

MAC / LINUX

  • TEST= docker-compose up创build并启动appdb容器。 然后,api应该在端口3030上的docker守护进程上运行。
  • TEST=DO docker-compose up to create and start both app and db container。 api应该在package.json文件中执行npm run test

WINDOWS(Powershell)

  • $env:TEST="";docker-compose up可创build并启动appdb容器。 然后,api应该在端口3030上的docker守护进程上运行。
  • $env:TEST="do";docker-compose up创build并启动appdb容器。 api应该在package.json文件中执行npm run test

您需要将variables作为环境variables传递:

 testvar=test docker-compose up ... 

要么

 export testvar=test docker-compose up 

docker-compose不包含任何标志或命令以传递参数。

撰写主要是一个运行服务,而不是build立图像的工具。 尝试使用在每个dockerfile中为参数定义的ARG

不可能支持每一个独特的构buildscheme,因为docker-compose不是为此devise的。 你只能真正支持最常见的构buildscheme。

你可以在这里看到更多关于他的话题的信息 。

我不确定你想在这里做什么,但是如果你需要的是将一个环境variables传递给特定的容器,docker-compose.yml允许你这样做:

 web: ... environment: - RAILS_ENV=production - VIRTUAL_HOST=www.example.com - VIRTUAL_PORT=3011 

这个variables对于你指定的容器是特定的,不会在容器之间共享。

“docker – 组成”也没有任何争论。