Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django.db.utils.OperationalError:致命:数据库;图书馆;不存在_Django_Postgresql_Docker - Fatal编程技术网

django.db.utils.OperationalError:致命:数据库;图书馆;不存在

django.db.utils.OperationalError:致命:数据库;图书馆;不存在,django,postgresql,docker,Django,Postgresql,Docker,我正在尝试使用docker将我的项目与postgres数据库连接起来。当我使用默认的postgres设置时,它可以正常工作 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': 'd

我正在尝试使用docker将我的项目与postgres数据库连接起来。当我使用默认的postgres设置时,它可以正常工作

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432
    }
}
但是,当我尝试使用postgre admin创建数据库并希望在django项目中使用它时,它显示了错误。 我的Dockerfile:

Dockerfile
# Pull base image
FROM python:3.7
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
# Copy project
COPY . /code/
数据库的settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'library',
        'USER': 'postgres',
        'PASSWORD': 'my_password',
        'HOST': 'db',
        'PORT': 5432
    }
}
还有docker-compose.yml

docker-compose.yml
version: '3.7'
    
services:
  db:
    hostname: db
    image: postgres:11
    environment:
      - POSTGRES_DB=library
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=my_password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
volumes:
  postgres_data:

当postgres映像首次启动且没有数据时,它将创建一个名为
postgres\u DB
环境变量的数据库

您已经在卷中创建了一个数据库。您应该删除
postgres\u数据
卷并重新启动,以便创建具有新名称的数据库。将
-v
传递到
docker compose down
以删除任何卷

docker-compose down -v
docker-compose up -d

当postgres映像首次启动且没有数据时,它将创建一个名为
postgres\u DB
环境变量的数据库

您已经在卷中创建了一个数据库。您应该删除
postgres\u数据
卷并重新启动,以便创建具有新名称的数据库。将
-v
传递到
docker compose down
以删除任何卷

docker-compose down -v
docker-compose up -d