Docker PostgreSQL公开密码?
Docker Postgres示例库提供了通过docker run
或使用docker-compose
文件启动postgreSQL实例的示例,两者分别如下所示。
docker run
call在命令中显示密码, docker-compose
文件公开可以在Github上查看的密码。 我已经学会了永远不要以这种方式公开证书,并始终从环境中检索。 有没有一个正确的方式来dockerize postgreSQL的安全性? 或者这是安全的,我的理解是不正确的?
docker run
示例:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
docker-compose
例子:
version: '3.1' services: db: image: postgres restart: always environment: POSTGRES_PASSWORD: example
事实上,即使这些系统没有公开曝光,最好在源代码pipe理中没有任何可见的证书。
有一个简单的方法来绕过列出这些值,只需简单地省略环境定义的正确部分,并只列出variables名。 这样你可以事先在shell中设置密码,docker或者docker compose将会使用它。
environment: - POSTGRES_PASSWORD
然后通过它运行
POSTGRES_PASSWORD=pass docker-compose up -d
另外还有一个秘密的概念,它是一种存储凭据的方法,只允许访问指定的容器。
在docker秘密看更多
为了增加接受的答案,值得注意的是,只要你在docker-compose.yml
文件中指定了环境variables:
environment: - POSTGRES_PASSWORD
并且当前shell环境已经设置了POSTGRES_PASSWORD,下面的docker-compose
命令将inheritancePOSTGRES_PASSWORD
环境variables:
docker-compose up -d
不需要将其前缀添加到docker-compose up -d
命令中。