Django,Docker和Pipenv-添加新软件包时出错

时间:2018-11-20 19:40:23

标签: django docker docker-compose pipenv

在Docker项目中使用Pipenv会导致我的Django项目出现一些问题。

我已经用Pipenv在本地安装了Django,它会生成PipfilePipfile.lock。然后使用startproject开始一个新的Django项目。

然后我添加一个Dockerfile文件。

# Dockerfile
FROM python:3.7-slim

ENV PYTHONUNBUFFERED 1

WORKDIR /code
COPY . /code

RUN pip install pipenv
RUN pipenv install --system

还有一个docker-compose.yml文件。

# docker-compose.yml
version: '3'

services:
  web:
    build: .
    command: python /code/manage.py migrate --noinput && /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000

并运行docker-compose up --build来构建映像并启动容器。一切正常。

现在是问题所在……我想添加一个新软件包,比如说psycopg2,以便可以使用PostgreSQL。

所以...更新我的docker-compose.yml以添加PostgreSQL。

# docker-compose.yml
version: '3'

services:
  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
  web:
    build: .
    command: python /code/manage.py migrate --noinput && /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:
      - db

volumes: postgres_data:

并更新DATABASE中的settings.py配置。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432
    }
}

现在,如果我像psycopg2-binary一样在本地安装pipenv install psycopg2-binary,则该“应该”与Docker同步。但是我收到“没有名为“ psycopg2”的模块错误”。

好,所以也许我需要直接在Docker中安装它:

$ docker-compose exec web pipenv install psycopg2-binary` 

不,同样的错误。

也许我需要在Docker中生成锁定文件?

$ docker-compose exec web pipenv lock

再次。所以问题是Pipenv的状态...我觉得我已经接近了,但在这里还不太了解。

有人看到错误了吗?

0 个答案:

没有答案