在我的docker-compose.yml中,我使用以下方法将SSL证书装载到我的容器中:
- ./certs:/var/lib/postgresql/certs
/certs文件夹及其内的所有内容都由root在本地拥有。
然而,在启动容器时,我收到:
2022-08-26 20:04:40.623 UTC [1] FATAL: could not load server certificate file "/var/lib/postgresql/certs/db.crt": Permission denied
将本地权限更新为其他权限(777755等(会导致一个单独的错误:
FATAL: private key file "/var/lib/postgresql/certs/postgresdb.key" has group or world access
我意识到我可以通过Dockerfile复制证书,但我不想每次更改证书时都构建新的映像。处理这个问题的最佳方法是什么?
在启动容器之前,将证书的所有权更改为容器内使用的用户。
你需要仔细检查用户的id,因为你没有显示你运行的图像。下面是一个例子。
sudo chmod -R 400 ./certs
sudo chown -R 5432:5432 ./certs
或者,您可以使用您的本地用户ID运行容器。我只建议用于开发目的。
docker run --user "$(id -u)" postgres
在这种情况下,还要确保您的本地用户对certs目录有权限。