django - 在 dockerized 项目上运行 Django 迁移
问题描述
我有一个项目Django
在. 源代码附在我本地机器上的目录中。这是撰写配置文件:Docker
docker-compose
version: '3'
services:
db:
image: 'postgres'
ports:
- '5432:5432'
core:
build:
context: .
dockerfile: Dockerfile
command: python3 manage.py runserver 0.0.0.0:8000
ports:
- '8001:8000'
volumes:
- .:/code
depends_on:
- db
尽管应用程序正常启动,但我无法运行迁移,因为每次我都会manage.py makemigrations ...
收到:
django.db.utils.OperationalError: could not translate host name "db" to address: nodename nor servname provided, or not known
显然我可以bash
在core
容器内打开并makemigrations
从那里运行,但是迁移文件是在容器内创建的,这非常不舒服。
在我的项目设置中,数据库配置为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': '5432',
}
}
由于可以访问 docker postgres 图像,因此localhost:5432
我尝试将设置中的数据库主机更改为:
'HOST': '0.0.0.0'
但是当我用docker-compose up
我收到的启动容器时:
...
django.db.utils.OperationalError: could not connect to server:
Connection refused
Is the server running on host "0.0.0.0" and accepting
TCP/IP connections on port 5432?
...
我应该如何配置数据库settings.py
以便Django
可以访问它来创建迁移?
解决方案
您的 docker-compose 配置不正确。您忘记链接服务
version: '3'
services:
db:
image: 'postgres'
ports:
- '5432:5432'
core:
build:
context: .
dockerfile: Dockerfile
command: python3 manage.py runserver 0.0.0.0:8000
ports:
- '8001:8000'
volumes:
- .:/code
depends_on:
- db
links: # <- here
- db
推荐阅读
- python-3.x - 为什么当我在数据帧中的特定系列对象上使用 str.contains() 方法时,它会给我一个错误
- assembly - 从 8086 汇编语言中的用户输入实例化指定大小的数组?
- r - 如何匹配来自 R factoextra 包的树状图、轮廓和集群图上的集群颜色?
- ios - SwiftUI - 将应用程序移动到后台然后恢复到前台后,TabView 失去颜色
- apache - 如果来自特定 IP 地址,则允许用户使用任何密码
- postgresql - 我无法在 Mac Big Sur 上的 MAMP 中添加 pgsql PDO 驱动程序
- sql - PostgreSQL 按日期范围数组分组
- node.js - nodejs如何控制json数据
- javascript - 在区域地图上使用 elementFromPoint 时,Firefox 和 Opera 会给出不同的元素
- c++ - 如何更改 MakeFile 以使用本地安装的库而不是源相对路径?