我有这个 dockerfile
FROM rabbitmq:3.7.12-management
CMD . /files/envinfo && echo $RABBITMQ_DEFAULT_USER && rabbitmq-server
在 envinfo 我有这个内容导出 RABBITMQ_DEFAULT_USER='anothername'
当 docker 启动时,RABBITMQ_DEFAULT_USER 的回显确实打印出另一个名称。但是当服务启动时它看不到它。
如果我从 kubernetes 文件中以另一种方式设置环境变量,它应该可以正常工作。
你可以看到我在这里扩展的 rabbitmq 图像。
https://github.com/docker-library/rabbitmq/blob/35b41e318d9d9272126f681be74bcbfd9712d71b/3.8/ubuntu/Dockerfile
我有另一个进程获取文件并将其放入/files/envinfo 以使其在启动时可用于此 docker 镜像。所以我不能使用 kubernetes 的环境设置。
期待听到一些建议=)
最佳答案
我同意@code-gorilla 使用 Kubernetes 环境变量。但另一种方法是在入口点之前获取环境变量:
ENTRYPOINT ["source /files/envinfo && docker-entrypoint.sh"]
覆盖 CMD
只会将参数更改为 ENTRYPOINT
,这可能就是为什么它不适合你。
关于docker - 在启动 docker 之前从文件中读取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64465645/