我正在学习如何使用本手册使用Compose+Django https://docs.docker.com/compose/django/
这是我的配置文件
码头工人-合成.yml
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
在设置.py在
^{pr2}$当我使用docker-compose up
运行时,一切正常。在
但是当我使用python manage.py runserver
运行时,我遇到了这个错误
psycopg2.OperationalError: could not translate host name "db" to address: Name or service not known
我猜错了
您忘记在
db
服务中设置hostname
。在提示:部署生产服务器时不要使用
runserver
。检查this doc在评论中描述了解决方案
编辑)
单独设置示例。将您的原始
settings.py
设置为base.py
文件夹中。在
^{pr2}$<your_app>/settings/local.py
<your_app>/settings/deploy.py
最后,您的settings文件夹包含三个python文件。
base.py
,local.py
,deploy.py
当您使用本地设置运行服务器时,
python manage.py runserver settings <your_app>.settings.local
。在这是docker/django安装中常见的问题,postgres容器已初始化,但引擎尚未就绪。 运行web容器之前,必须等待postgresql server启动。在
你可以用几种方法来做,看看dockerize
我猜你想逃跑管理.py在主机上运行服务器。错误意味着,您不能从它访问主机'db'(请尝试在控制台中ping db)。这有几个原因:
docker-compose up -d db
ping 127.0.0.11
(这是docker的DNS服务器)另外,你真的希望本地Django在容器中使用Postgres吗?在
相关问题 更多 >
编程相关推荐