Django模型更改不反映在Postgres Docker容器上
我有一个与Docker部署的Django-Postgres应用程序。 我有两个docker容器web
和db
和一个docker卷用于持久性存储。
我docker-compose.yml
文件:
version: '2' services: db: image: postgres ports: - '5432:5432' volumes: - 'postgres:/var/lib/postgresql/data' env_file: .env web: build: . command: ./start.sh volumes: - .:/app ports: - "8000:8000" depends_on: - db env_file: .env volumes: postgres:
我在我的django model.py
做了一个改动:
class Meeting(models.Model): [...] participants = models.CharField(max_length=200)
至
class Meeting(models.Model): [...] user_participants = models.CharField(max_length=200)
但是,这个变化并没有反映在我的Django应用程序,我得到以下错误:
列call_meeting.user_participants不存在
我跑了:
python manage.py makemigrations call python manage.py migrate
然后我尝试删除Django迁移并重新运行上述命令。 我试图重新运行docker-compose build
但没有一个工作。
为什么会这样呢? 我应该用原始SQL更改列名吗?
从你的问题和意见,我觉得你的django没有使用正确的数据库。 或者更可能(而不是两个共存的db实例),即使docker-compose文件看起来不像它,每个docker重新启动时都会重新创build数据库。
我们正在使用一个类似的设置,这对我们来说很合适,但是数据卷的安装方式不同 – 所以这可能是这里的问题:
- ./pgdata:/var/lib/postgresql/data/pgdata
settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': os.environ.get('POSTGRES_DB', 'my_db'), 'HOST': os.environ.get('POSTGRES_HOST', 'localhost'), 'PORT': os.environ.get('POSTGRES_PORT', '5432'), 'USER': os.environ.get('POSTGRES_USER', 'my_user'), 'PASSWORD': os.environ.get('POSTGRES_PASSWORD', 'my_password'), 'CONN_MAX_AGE': 120 } }
泊坞窗,compose.yml
version: '2' services: postgres: image: postgres:9.5 volumes: - ./pgdata:/var/lib/postgresql/data/pgdata environment: - PGDATA=/var/lib/postgresql/data/pgdata - POSTGRES_DB=<name> #django.settings.DATABASES['default']['NAME'] - POSTGRES_USER=<user> #django.settings.DATABASES['default']['USER'] - POSTGRES_PASSWORD=<password> #django.settings.DATABASES['default']['PASSWORD'] ports: - 5432:5432 web: depends_on: - postgres volumes: - .:/app environment: - POSTGRES_HOST=postgres - POSTGRES_DB=<host> # no need if settings.py is fine - POSTGRES_USER=<user> # no need if settings.py is fine - POSTGRES_PASSWORD=<password> # no need if settings.py is fine build: . ports: - 8000:8000 command: ./start.sh
- Docker用户权限在访问容器中的文件夹时被拒绝
- Docker + Django + Angular + Heroku + Postgresql – 进程退出状态127,错误代码= H10 desc =“应用程序崩溃”
- Django日志logging权限错误权限被拒绝
- 芹菜没有findpostgres容器
- 如何使用Docker在Elastic Beanstalk上部署django 1.8
- 为什么CMD不能在我的Docker文件中工作?
- ElasticBeanstalk Docker,一个Container还是多个容器?
- Celery + Docker + Django无法运行asynchronous作业
- 在django开发服务器运行的时候,我怎样才能curl127.0.0.1/8000?