[docker-compose在require.txt更改时重置django数据库

问题描述 投票:0回答:1

我正在使用docker-compose开发具有postgres数据库的django项目。

使用VS代码,在Docker Compose Up之后,我得到了两个正在运行的泊坞窗。

每次我在项目上工作时,数据库都是完整的

问题是,对requirements.txt进行任何更改时,即使未对该数据库图像进行任何更改,数据库图像也会重置。

我必须运行python manage.py migratecreatesuperuser,并且数据库为空。

[我可以理解,web发生更改时必须重新创建requirements.txt docker映像,但是为什么要重置数据库映像?

是否有避免这种情况的方法?我不希望发布生产应用程序,并且不能在不丢失数据库的情况下在新版本中安装其他库。

docker-compose.yml

version: '3'

services:
  db:
    image: postgres
    environment:
      POSTGRES_USER: 'aaa'
      POSTGRES_PASSWORD: 'aaa'
      POSTGRES_DB: 'aaa'
  web:
    build: .
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
    stdin_open: true
    tty: true

Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
django docker docker-compose
1个回答
0
投票

您应该为数据库创建持久卷:

version: '3'

services:
  db:
    image: postgres
    environment:
      POSTGRES_USER: 'aaa'
      POSTGRES_PASSWORD: 'aaa'
      POSTGRES_DB: 'aaa'
      PGDATA: '/database'
    volumes:
      - ./database:/database
  web:
    build: .
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
    stdin_open: true
    tty: true
© www.soinside.com 2019 - 2024. All rights reserved.