Django 服务器不以 docker-compose up 启动
Posted
技术标签:
【中文标题】Django 服务器不以 docker-compose up 启动【英文标题】:Django server does not start with docker-compose up 【发布时间】:2022-01-23 04:07:36 【问题描述】:我将我的 django 后端应用程序化。我正在使用 posgresql 作为数据库。在做 docker-compose up 之后,最后的日志是:
db_1 | 2021-12-21 18:39:58.213 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
db_1 | 2021-12-21 18:39:58.213 UTC [1] LOG: listening on IPv6 address "::", port 5432
db_1 | 2021-12-21 18:39:58.310 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1 | 2021-12-21 18:39:58.476 UTC [42] LOG: database system was shut down at 2021-12-21 18:39:58 UTC
db_1 | 2021-12-21 18:39:58.678 UTC [1] LOG: database system is ready to accept connections
我没有收到任何其他日志,我不知道问题是什么,可能是由于 postgresql。但是 django 服务器没有启动。 我做了 docker ps 我得到了以下结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d92379ca89b7 prodlerbackend_prodler "python manage.py ru…" 20 minutes ago Up 20 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp prodlerbackend_prodler_1
3364c1cda344 postgres:11.2-alpine "docker-entrypoint.s…" 20 minutes ago Up 20 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp prodlerbackend_db_1
我认为容器已启动,但 Django 服务器仍未启动可能是什么问题?
docker-compose.yml
version: "3.9"
services:
db:
image: postgres:11.2-alpine
volumes:
- ./postgres-data:/var/lib/postgresql/data
environment:
- HOST=localhost
- POSTGRES_DB=prodler
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=admin123
ports:
- 5432:5432
prodler:
build:
context: .
dockerfile: Dockerfile
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
【问题讨论】:
好像在运行,访问http://localhost:8000
得到什么响应?
这能解决您的问题吗? ***.com/questions/29663459/…
我在访问 localhost:8000 时没有得到任何响应。网页打不开
如果您尝试自己运行 prodler 容器,那么您会得到任何输出吗? docker compose run --rm prodler python -u manage.py runserver 0.0.0.0:8000
不,它给出了这个错误:“无法连接到服务器:无法分配请求的地址服务器是否在主机“localhost”(::1) 上运行并接受端口 5432 上的 TCP/IP 连接? "
【参考方案1】:
您需要在配置中更改连接详细信息以连接到 postgres:5432
【讨论】:
以上是关于Django 服务器不以 docker-compose up 启动的主要内容,如果未能解决你的问题,请参考以下文章
Django 无法创建到“postgres”数据库的连接,而是使用默认数据库 [关闭]