django.db.utils.OperationalError:致命:数据库;图书馆;不存在
我正在尝试使用docker将我的项目与postgres数据库连接起来。当我使用默认的postgres设置时,它可以正常工作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
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