【问题标题】:Docker container - what's the best practice to inject to it a sensitive dataDocker容器-向其中注入敏感数据的最佳实践是什么
【发布时间】:2019-07-19 06:36:17
【问题描述】:

我有一个发送电子邮件的服务。我不想将我的 Gmail 密码保存在任何文件中。谷歌搜索后,我发现我可以在构建容器时使用 --build-arg 参数为容器提供环境变量。

Dockerfile 文件

FROM node:latest
ARG buildtime_variable=default_value
ENV env_var_name=$buildtime_variable
...
CMD [ "node", "dist/server.js" ]

构建命令

$ docker build --build-arg buildtime_variable=new_value .

列出运行容器中的环境变量

$ docker exec app env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=38dd21dbeda3
NODE_VERSION=11.10.0
YARN_VERSION=1.13.0
env_var_name=default_value
HOME=/root

为什么 env_var_name 仍然等于 default_value 或者我如何将 new_value 注入容器?

非常感谢您的每一个回答!

【问题讨论】:

  • --build-arg 应该使传入的任何字符串都永久保存在图像中,并且可以通过docker history 轻松检索。这不是您要寻找的答案。
  • 两种常见的答案是使用docker run -e 注入一个环境变量,或者将其放入使用docker run -v 注入的配置文件中。两者都会留下对其他具有根级访问权限的用户可见的面包屑,包括可以运行任何 Docker 命令的任何人。还有更严肃/涉及/复杂/安全的答案。

标签: docker environment-variables docker-container docker-build docker-exec


【解决方案1】:

只需使用 docker-compose 而不是 docker 命令:

docker-compose build --build-arg buildtime_variable=new_value <container name>

享受吧!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2015-03-07
    • 2011-12-12
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多