2017-09-28 47 views
0

Docker Postgres samples library提供了通過docker run或使用docker-compose文件啓動postgreSQL實例的示例,兩者分別如下所示。Docker PostgreSQL公開密碼?

docker run呼叫在該命令中暴露密碼,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 

回答

2

事實上,即使這些系統都沒有公開暴露,最好不要在源代碼控制可見的任何憑據。

有一種簡單的方法來繞過列出這些值,只需簡單地省略環境定義的正確部分並只列出變量名。這樣,您可以事先在shell中設置密碼,並且docker或docker compose將使用它。

environment: 
    - POSTGRES_PASSWORD 

,然後通過

POSTGRES_PASSWORD=pass docker-compose up -d 

運行它此外,還有它們存儲憑證和只允許訪問指定的容器的方式祕密的概念。

多見於docker secrets

0

要添加到接受的答案,這是值得注意的是,只要你指定在docker-compose.yml文件中的環境變量:

environment: 
    - POSTGRES_PASSWORD 

和當前shell環境有POSTGRES_PASSWORD已設置,以下docker-compose命令將繼承POSTGRES_PASSWORD環境變量:

​​

無需將其前綴添加到docker-compose up -d命令中。