![](/img/trans.png)
[英]docker-compose.yml environment variable to php environment variable
[英]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.