我的应用程序位于容器中,它读取密码和API密钥的环境变量以访问服务。如果我在我的机器上运行应用程序(不在docker中),我只需export SERVICE_KEY='wefhsuidfhda98'
,应用程序就可以使用它。
这是什么标准方法?我正在考虑使用export
命令添加到服务器的秘密文件,然后在该文件上运行source
。
我使用的是docker&图
答案 0 :(得分:5)
我解决的解决方案如下:将环境变量保存在一个秘密文件中,然后使用无花果将其传递给容器。
有一个带有秘密信息的secret_env
文件,例如
export GEO_BING_SERVICE_KEY='98hfaidfaf'
export JIRA_PASSWORD='asdf8jriadf9'
secret_env
.gitignore
为开发人员提供secret_env.template
文件,例如
export GEO_BING_SERVICE_KEY='' # can leave empty if you wish
export JIRA_PASSWORD='' # write your pass
在我的fig.yml
中,我通过以下方式发送变量:
environment:
- GEO_BING_SERVICE_KEY
- JIRA_PASSWORD
source secret_env
答案 1 :(得分:4)
docker run
提供了环境变量:
docker run -e SERVICE_KEY=wefsud your/image
然后您的应用程序将从环境中读取SERVICE_KEY https://docs.docker.com/reference/run/
在图中,您将使用
environment:
- SERVICE_KEY: wefsud
在您的应用规范中。 http://www.fig.sh/yml.html
从安全角度来看,如果您的docker二进制文件需要root访问权限,那么前一种解决方案并不比在主机上运行它更糟糕。如果您允许“docker”组用户运行docker,则安全性较低,因为任何docker用户都可以docker inspect
运行容器。在主机上运行时,您需要是root用户才能检查正在运行的进程的环境变量。