2016-01-29 54 views
7

我有一个docker-compose.yml文件,并在终端我typing docker-compose up [something]但我也想通过一个参数docker-compose.yml。这可能吗?我读过有关插值变量和尝试使用${testval}然后docker-compose up [something] var="test"指定在.yml文件中的变量,但我收到以下错误:我如何通过一个参数与码头一起构成

WARNING: The testval variable is not set. Defaulting to a blank string.
ERROR: No such service: testval=test

回答

2

docker-compose不包括为了传递参数的任何标志或命令。

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

由于docker-compose不是为此目的而设计的,因此无法支持每个独特的构建方案。你只能真正支持最常见的构建方案。

你可以看到更多的信息关于他的话题here

5

你需要通过变量作为环境变量:

testvar=test docker-compose up ... 

export testvar=test 
docker-compose up 
2

我不知道你想在这里做什么,但如果你需要的是一个传递到特定的容器码头工人,compose.yml环境变量允许你这样做:

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

这个变量将特定于您指定的容器,并且不会在容器之间共享。

此外,“docker-compose up”不会引用任何参数。

7

基于dnephin answer,我创建了这个sample repo,您可以将一个变量传递给docker-compose up。

用法很简单:

MAC/LINUX
  • TEST= docker-compose up创建并同时启动appdb容器。然后该API应该在端口3030上的docker守护程序上运行。
  • TEST=DO docker-compose up创建并启动容器的两个app和。该API应执行package.json文件中的npm run test
WINDOWS(Powershell的)
  • $env:TEST="";docker-compose up创建并同时启动appdb容器。然后该API应该在端口3030上的docker守护程序上运行。
  • $env:TEST="do";docker-compose up创建并启动容器的两个app和。该API应执行package.json文件中的npm run test
相关问题