这里没有标准。
Docker 文档不鼓励使用环境变量,但是无论是在“环境”部分中直接将密码设置为字符串还是在容器中使用环境变量的其他用法,都存在混淆。当可能在多个服务中使用相同的值时,也使用字符串而不是秘密需要在多个位置而不是一个秘密值中检查和更改它。
一些图像,如 mariadb,使用带有 _FILE 后缀的环境变量来使用秘密文件内容填充无后缀版本的变量。这似乎没问题。
使用 Docker 不应该只为了支持文件中的机密而重新设计应用程序架构。大多数其他编排工具,如 Kubernetes,都支持将秘密直接放入 env 变量中。如今,这并不被认为是不好的做法。Docker Swarm 只是缺乏将秘密传递给 env 变量的良好实践和适当示例。
恕我直言,最好的方法是使用入口点作为“装饰器”来从秘密中准备环境。
正确的入口点脚本可以编写为处理秘密的几乎通用方式,因为我们可以将原始图像入口点作为参数传递给我们的新入口点脚本,因此在我们使用脚本准备容器后,原始图像“装饰器”正在做自己的工作。
就我个人而言,我正在使用以下带有图像的入口点/bin/sh
:
https ://github.com/DevilaN/docker-entrypoint-example