Django + psycopg2 OperationalError не удалось открыть файл сертификата "/root/.postgresql/postgresql.crt": Отказано в разрешении

У меня есть сервер с ubuntu 22 и базой данных postgres на digitalocean. Я развертываю там django приложение с помощью docker swarm и когда я пытаюсь получить доступ к странице /admin я получаю эту ошибку:

connection to server at "xxxx.db.ondigitalocean.com" (xx.xxx.xxx.xx), port 25060 failed: could not open certificate file "/root/.postgresql/postgresql.crt": Permission denied

Добавлю, что когда я создал тестовый скрипт для подключения к базе данных для тестов на сервере, все работает нормально, и я могу подключиться к базе данных с локального компьютера. Тот же проект, когда я запускаю его локально, подключается к базе данных без каких-либо проблем

Настройки БД

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "dbname",
        "USER": "user",
        "PASSWORD": "pass",
        "HOST": "xxxx.db.ondigitalocean.com",
        "PORT": "25060",
    }
}

DOCKERFILE

FROM python:3.11

ARG GIT_ACCESS_TOKEN

RUN git config --global url."https://${GIT_ACCESS_TOKEN}@github.com".insteadOf "ssh://git@github.com"

WORKDIR /backend

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

COPY requirements.txt .
COPY entrypoint.sh .
COPY entrypoint-celery.sh .

# ADD /backend /backend
COPY /backend /backend

RUN python -m pip install -r requirements.txt

RUN mkdir -p /backend/tmp
RUN chmod -R 777 /backend/tmp

RUN mkdir -p /orders/xmls
RUN chmod -R 777 /orders/xmls

У меня была такая же ошибка, нашел эту тему https://github.com/psycopg/psycopg2/issues/1535

В итоге я применил это обходное решение, предложенное здесь: https://github.com/nginx/unit/issues/834#issuecomment-1410297997

В ваш докерфайл просто добавьте следующее

ENV PGSSLCERT /tmp/postgresql.crt
Вернуться на верх