docker Django + psycopg 2 OperationalError无法打开证书文件“/root/. postgresql/postgresql. crt”:权限被拒绝

gr8qqesn  于 2023-04-05  发布在  Docker
关注(0)|答案(1)|浏览(148)

我在digitalocean上有一个ubuntu 22服务器和一个postgres数据库。我在那里使用docker swarm部署了一个django应用程序,当我试图访问/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",
    }
}

文件夹

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
xlpyo6sf

xlpyo6sf1#

出现同样的错误,找到此线程https://github.com/psycopg/psycopg2/issues/1535
我最终应用了这里建议的解决方法:https://github.com/nginx/unit/issues/834#issuecomment-1410297997
在你的dockerfile中添加以下内容

ENV PGSSLCERT /tmp/postgresql.crt

相关问题