docker - 在启动 docker 之前从文件中读取环境变量

标签 docker kubernetes

我有这个 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/

相关文章:

node.js - Chrome 中的 Webpack 不完整 block 编码

存在容忍度的 Kubernetes DaemonSets

php - 如何构建用于从 Kubernetes 集群外部的机器传递文件的 sidecar 容器?

kubernetes - 如何验证集群网络策略配置/支持

docker - 如何限制docker拉/推至特定注册表

docker - 我们如何在不同实例上运行的多个 docker 上部署 vespa 应用程序?

asp.net - 如何将 Visual Studio for Mac 项目连接到 Azure Data Studio 数据库?

docker - 如何通过docker镜像在kubernetes容器中安装kubectl

kubernetes - Kubernetes Python API用于创建自定义对象

用于容器的 Azure Web 应用程序持久存储