shell Docker-compose文件中的脚本化参数

vuktfyat  于 2023-02-24  发布在  Shell
关注(0)|答案(1)|浏览(127)

在我的docker-compose文件(docker-compose.yaml)中,我想基于一个小shell脚本设置一个参数,如下所示:

services:
  backend:
    [...]
    build:
      [...]
      args:
        PKG_NAME: $(dpkg -l <my_package>)

Dockerfile中,我这样读这个参数:

ARG PKG_NAME

首先:我知道这种方法依赖于操作系统(需要dpkg),但是对于初学者来说,我很乐意让它在Debian上运行,而且如果值是空字符串也没关系。
但是,docker-compose up会抛出以下错误:

ERROR: Invalid interpolation format for "build" option in service "backend": "$(dpkg -l <my_package>)"

有没有办法通过shell脚本(或其他方法)在docker-compose文件中动态指定参数?

vybvopom

vybvopom1#

只能按照合成文件文档中的说明使用变量替换
您正在尝试注入shell构造,但不支持此操作。
文档包含several examples on how to pass vars to compose file。在您的情况下,您可以:
1.导出环境中的var:

export MY_PACKAGE=$(dpkg -l <my_package>)

1.在合成文件中使用该变量,并使用默认值:

args:
        PKG_NAME: "${MY_PACKAGE:-some_default_pkg}"

相关问题