指定Docker容器的超级用户PostgreSQL密码

在Docker容器中运行PostgreSQL数据库时,官方PostgreSQL Docker Image的文档指定应将pipe理员密码设置为环境variables,如:

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres 

对于那些不想在脚本中硬编码纯文本密码的人,是否有更安全的select要考虑?

将configuration设置作为环境variables注入是由12因子应用程序网站推荐的应用程序configuration方法。

或者,您可以创build自己的容器,从自定义configuration文件中读取configuration:

 docker run -d mydockerapp --config mydevconfig.yaml 

但是,真正使用环境variables在灵活性方面具有优势,因为它在所有平台上无处不在。 为了使环境variables更可口,你可以在文件中指定它们。 这至less可以确保同一台机器上的恶意用户无法从进程列表中搜集证书:

 $ cat env.db POSTGRES_DB=myappdb POSTGRES_USER=admin POSTGRES_PASSWORD=pleasechangeme $ docker run --name postgres --env-file=env.db -d postgres 

最后,我发现docker有更好的秘密支持的一些特性要求:

根据我的经验,便利有一个固守安全的习惯,所以我想可以用一个可以接受的解决scheme来获得足够的思想分享。 就个人而言,我预见了一个新兴的解决scheme,即模拟Kubernetes项目正在使用encryption数据卷进行的工作: