通过装载的卷添加SSL证书导致权限问题



在我的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目录有权限。

最新更新