繁体   English   中英

docker-compose.yml 不会读取主机名的环境变量

[英]docker-compose.yml won't read environment variable for hostname

我很久没有在 SO 上发帖了,我希望我没有违反任何规则。

我的~/.bash_profile有一个环境变量,导出如下,我确保运行source ~/.bash_profile

export HOSTNAME=some-name

这就是我docker-compose.yml样子:

version: '3'

services:
    someservice:
        build:
            context: .
            dockerfile: ./Dockerfile
        image: ...
        container_name: ...
        restart: unless-stopped
        hostname: "someservice.${HOSTNAME:?Error: env var HOSTNAME is not defined or is empty}"
        ...

如果我运行docker-compose up -d ,我会得到以下错误:

ERROR: Invalid interpolation format for "hostname" option in service "some-service":
 "someservice.${HOSTNAME:?Error: env var HOSTNAME is not defined or is empty}"

如果我用some-name替换上面的HOSTNAME ,我将收到以下错误:

Starting someservice ... error

ERROR: for someservice  Cannot start service: OCI runtime create failed: 
container_linux.go:346: starting container process caused "process_linux.go:449: 
container init caused \"sethostname: invalid argument\"": unknown

ERROR: Encountered errors while bringing up the project.

知道为什么我会收到错误以及如何排除故障和/或修复它吗? 非常感谢!

编辑 1:修复了我export错字

Edit2:这可能有助于故障排除:从 yaml 文件中删除ERROR部分修复了该问题。 所以,在我docker-compose.yml我只有:

...
   hostname: "someservice.${HOSTNAME} 
...

要公开我们使用的环境值= not : ,请将您的 bash 配置文件更改为export HOSTNAME=some-name

根据文档,不支持其他扩展的 shell 样式功能,例如${VARIABLE/foo/bar} 请参阅https://docs.docker.com/compose/compose-file/ 您可能只需要使用"${HOSTNAME:?Error: env var HOSTNAME is not defined or is empty}"而不需要一些服务someservice.

如果您将撰写文件的版本设置为“2.1”,它是否有效? 这是一个诊断检查,以确认文档说明了我认为它的作用,因此如果您必须注释/更改其他行以避免使用 3.x 功能,现在可以。

撰写文件文档表明 :? 扩展适用于撰写文件版本 2.1,我想知道这是否是没有移植到版本 3 撰写文件的事情之一(有一些类似的东西)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM