首页 > 解决方案 > 将 shell 命令结果从 docker-compose 传递给 Dockerfile

问题描述

我试图通过 docker-compose 将用户组 ID 从我的 Linux 环境传递到 Dockerfile。我知道 docker-compose.yml 中的“args”,但我需要通过执行 shell commang“getent group mygroup | cut -d: -f3”来找到获取组 ID 的方法。这是一个强制性要求,因为这样容器将分布在不同的环境中,其中组的名称是已知的,并且 id 会有所不同。

这就是我所说的:

    version: '3.3'
    services:
    ...
        php:
            build:
                context: './php-fpm'
                args:
                    - GROUP_ID=<HERE I NEED TO GET SHELL COMMAND RESULTS>
            container_name: php-fpm
    ...

有什么方法可以做到这一点吗?

标签: dockerdocker-composedockerfile

解决方案


不完全是你要求的。

您可以在运行包装脚本之前设置环境变量。例如

export GROUP_ID=`getent group mygroup | cut -d: -f3`
run wrapper script to call your docker-compose file

然后您可以在 docker-compose 文件中检索 GROUP_ID:

                args:
                    - GROUP_ID=${GROUP_ID}

推荐阅读