我如何和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并启动app
和db
容器。 然后,api应该在端口3030上的docker守护进程上运行。 -
TEST=DO docker-compose up
to create and start bothapp
anddb
container。 api应该在package.json
文件中执行npm run test
。
WINDOWS(Powershell)
-
$env:TEST="";docker-compose up
可创build并启动app
和db
容器。 然后,api应该在端口3030上的docker守护进程上运行。 -
$env:TEST="do";docker-compose up
创build并启动app
和db
容器。 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 – 组成”也没有任何争论。