我如何与docker-compose一起传递参数

Bub*_*Tea 15 docker docker-compose

我有一个docker-compose.yml文件,在终端我是,typing docker-compose up [something]但我也想传递一个参数docker-compose.yml.这可能吗?我已经阅读了关于插值变量并尝试.yml使用${testval}然后在文件中指定变量docker-compose up [something] var="test"但是我收到以下错误:

警告:未设置testval变量.默认为空字符串.
错误:没有这样的服务:testval=test

Raf*_*oni 14

根据dnephin的回答,我创建了这个样本仓库,你可以将变量传递给docker-compose up.

用法很简单:

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


Jor*_*tao 14

您需要确保两件事:

  1. docker-compose.yml已宣布的环境变量。例如,
services:
    app:
        image: python3.7
        environment:
            - "SECRET_KEY=${SECRET_KEY}"
Run Code Online (Sandbox Code Playgroud)
  1. docker-compose up被调用时在环境中提供变量:
SECRET_KEY="not a secret" docker-compose up
Run Code Online (Sandbox Code Playgroud)

请注意,这并不等同于在构建期间传递它们,因为不建议将机密存储在 docker 映像中。


dne*_*hin 10

您需要将变量作为环境变量传递:

testvar=test docker-compose up ...
Run Code Online (Sandbox Code Playgroud)

要么

export testvar=test
docker-compose up
Run Code Online (Sandbox Code Playgroud)