docker compose exec web python manage.py makemigrations问题 问题
我创建了一个新的Django项目,并尝试将数据库从默认更改为PostgreSQL。更改settings.py中的docker compose exec web python manage.py makemigrations问题 问题,python,django,docker,docker-compose,Python,Django,Docker,Docker Compose,我创建了一个新的Django项目,并尝试将数据库从默认更改为PostgreSQL。更改settings.py中的数据库之后,我尝试在本地环境和docker compose容器中运行python manage.py migrate。虽然它在本地设置下工作正常,但docker compose没有。它抛出django.core.exceptions.impropertlyconfigured:加载psycopg2模块时出错:没有名为“psycopg2”的模块。错误。那么,有没有办法解决这个问题 复制错
数据库之后,我尝试在本地环境和docker compose容器中运行python manage.py migrate
。虽然它在本地设置下工作正常,但docker compose没有。它抛出django.core.exceptions.impropertlyconfigured:加载psycopg2模块时出错:没有名为“psycopg2”的模块
。错误。那么,有没有办法解决这个问题
复制错误的步骤
操作系统:WSL Ubuntu 4.4.0-18362-Microsoft
docker compose up-d
docker compose exec web pipenv install psycopg2 binary==2.8.4
docker撰写下一篇
docker compose exec web python manage.py migrate
数据库设置和Docker文件
我的docker-compose.yml,Dockerfile
Dockerfile
docker-compose.yml
Django在web
容器中运行,因此需要进入该容器来运行Django命令
因此,当您在exec安装后运行docker compose down
时,它将删除以前的容器
在你运行docker compose之后
只需运行其他2个命令,不要运行docker compose down
如果您想手动运行它
您可以通过以下方式进入容器bash:
docker compose exec web/bin/bash
进入控制台后,您可以键入:
python3 manage.py makemigrations
如果要退出容器bashshell,只需键入exit
,您可以使用以下方法
docker compose exec web sh-c“python manage.py makemigrations--noinput”
docker compose down
将删除您在docker exec中进行的所有配置。。。。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'Bardwolf@314',
'HOST': 'localhost',
'PORT': 5432
}
}
FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /code
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
RUN pipenv run pip install psycopg2-binary==2.8.4
COPY . /code/
version: '3.7'
services:
web:
build: .
command: python /code/manage.py runserver 0.0.0.0:8080
volumes:
- ./code
ports:
- 8080:8080
depends_on:
- db
db:
image: postgres:11