gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:21:03 29 4
gpt4 key购买 nike

问题
我创建了一个新的Django项目,并尝试将数据库从默认更改为PostgreSQL。在settings.py中更改DATABASES后,我尝试在本地环境和docker-compose容器中运行python manage.py migrate。虽然在本地设置中可以正常运行,但docker-compose却没有。它抛出django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'。错误。那么,有什么办法可以解决这个问题?
复制错误的步骤
操作系统:WSL Ubuntu 4.4.0-18362-Microsoft

  • docker-compose up -d
  • docker-compose exec web pipenv install psycopg2-binary==2.8.4
  • docker-compose down
  • docker-compose exec web python manage.py migrate

  • 数据库设置和Docker文件
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'postgres',
    'USER': 'postgres',
    'PASSWORD': 'Bardwolf@314',
    'HOST': 'localhost',
    'PORT': 5432
    }
    }
    我的docker-compose.yml,Dockerfile
    Docker文件
    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/
    docker-compose.yml
    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

    最佳答案

    您的Django在web容器中运行,因此您需要进入该容器以运行django命令。

    因此,当您在exec安装后运行docker-compose down时,它将删除以前的容器

    在运行docker-compose up之后

    只需运行其他2条命令,而不运行docker-compose down
    如果要手动运行

    您可以通过以下方式进入容器重击:

    docker-compose exec web /bin/bash



    进入控制台后,您可以输入:

    python3 manage.py makemigrations



    如果要退出容器bash shell,只需键入 exit

    关于python - docker-compose exec web python manage.py makemigrations问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59711756/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com