首页 > 解决方案 > 在不删除数据库的情况下关闭 django dev 项目的正确方法是什么

问题描述

蟒蛇 3.8 码头工人 Django 3

我有一个刚刚转换为 docker 的 django 项目。我注意到每次我关闭我的 docker 容器然后重新启动它时,我的数据库都会被删除。

当我旋转 docker 容器时,它应该杀死数据库吗?如果不是,那就有问题了。如果是这样,那么在我进行更改而不杀死数据库的情况下,让 django 脱机的最佳做法是什么

命令: docker-compose up -d --build

输出

Creating myproject_db_1 ... done
Creating myproject_web_1 ... done

命令

docker-compose down -v

输出

Stopping myproject_db_1 ... done
Stopping myproject_web_1 ... done
Removing myproject_db_1 ... done
Removing myproject_web_1 ... done

我确实有一个入口点脚本,它曾经每次都刷新数据库,但我现在已经注释掉了。入口点.sh

#!/bin/sh

if [ "$DATABASE" = "postgres" ]
then
    echo "Waiting for postgres..."

    while ! nc -z $SQL_HOST $SQL_PORT; do
      sleep 0.1
    done

    echo "PostgreSQL started"
fi

#python manage.py flush --no-input
python manage.py migrate

exec "$@"

码头工人-compose.yml

version: '3.7'

services:
  web:
    build: ./src
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./src/:/usr/src/app/
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev
    depends_on:
      - db
  db:
    image: postgres:12.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    env_file:
      - ./.env.dev.db
volumes:
  postgres_data:

标签: python-3.xdocker-composedjango-3.0

解决方案


推荐阅读