docker compose exec web python manage.py makemigrations问题 问题

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”的模块。错误。那么,有没有办法解决这个问题 复制错

我创建了一个新的Django项目,并尝试将数据库从默认更改为PostgreSQL。更改settings.py中的
数据库之后,我尝试在本地环境和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