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命令中。