gpt4 book ai didi

django - 为什么我的Django应用程序无法连接到docker内部的postgres

转载 作者:行者123 更新时间:2023-12-02 21:30:21 26 4
gpt4 key购买 nike

我正在尝试在Docker容器中启动django应用
docker-compose.yml

version: '3.8'

services:
api:
build:
context: .
dockerfile: ./Dockerfile-local
ports:
- "8000:8000"
entrypoint: ./entrypoint-local.sh
env_file:
- .env-local
links:
- postgresql
postgresql:
image: postgres:12.4
restart: always
environment:
- POSTGRES_USER=postgres
- POSTGRES_DB=frov_db
- POSTGRES_PASSWORD=postgres
- POSTGRES_HOST=postgresql
- POSTGRES_PORT=5432
- PGDATA=/var/lib/postgresql/data/pgdata
- C_FORCE_ROOT=true
ports:
- '5433:5432'
Dockerfile本地
FROM python:3.8-slim

ENV PYTHONDONTWRITEBYTECODE 1

WORKDIR /usr/src/app

COPY Pipfile.lock Pipfile ./
RUN pip install -U setuptools pip pipenv && pipenv install --system --deploy --ignore-pipfile --dev

COPY . .

RUN touch /var/log/filebeat.log && chmod 664 /var/log/filebeat.log \
&& chmod +x ./entrypoint-local.sh
entrypoint-local.sh
#!/bin/bash

python manage.py collectstatic --no-input --settings frov.settings.default

python manage.py migrate --settings frov.settings.default
python manage.py seed

gunicorn -b 0.0.0.0:8000 --workers=1 --env DJANGO_SETTINGS_MODULE=frov.settings.default frov.wsgi:application
.env-本地
DEBUG=True
DJANGO_SETTINGS_MODULE=frov.settings.default
DB_NAME=frov_db
DB_USER=postgres
DB_PASS=postgres
DB_HOST=postgresql
DB_PORT=5433
现在我有了主意,为什么会出现这样的错误
api_1         | psycopg2.OperationalError: could not connect to server: Connection refused
api_1 | Is the server running on host "postgresql" (172.21.0.2) and accepting
api_1 | TCP/IP connections on port 5433?
谁能帮助我?我只是不知道哪里可能发生错误

最佳答案

这个 ports config section:

ports:
- '5433:5432'
5432容器端口公开到 5433主机端口。但是,在docker网络中,仍然可以通过 5432端口访问数据库,因此您需要更改 .env文件以使用 5432端口。
如果您不需要其他应用程序即可从主机访问数据库,则可以完全忽略此 ports部分(您仍然可以使用 docker-compose exec与其连接)

关于django - 为什么我的Django应用程序无法连接到docker内部的postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64630266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com