无法在 Docker 容器中安装 Django 包

Unable to install Django package in a Docker container

我正在尝试在 Docker 容器中安装一个简单的 Django 包。

这是我的docker文件

FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1 
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY Pipfile Pipfile.lock /app/ 
RUN pip install pipenv && pipenv install --system
COPY . /app/

这是我的 docker-撰写:

version: '3.7'
services:
  web:
    build: .
    command: python /app/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app 
    ports:
      - 8000:8000
    depends_on:
      - db
  db:
    image: postgres:11
    volumes:
      - /Users/ruslaniv/Documents/Docker/djangoapp:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=XXX
      - POSTGRES_PASSWORD=XXX
      - POSTGRES_DB=djangoapp
volumes:
  djangoapp:

所以,我用

启动我的容器
docker-compose up

然后安装一个包并重建一个镜像

docker-compose exec web pipenv install django-crispy-forms
docker-compose down
docker-compose up -d --build

然后我将 'crispy_forms' 添加到本地 settings.py 并在本地 html 文件中使用 {% load crispy_forms_tags %} 注册 crispy 表单标签,然后将它们用于带有 [= 的表单18=]

但是表格没有正确呈现。
由于包本身及其用法非常简单,我认为将包安装在容器中存在问题。

所以问题是如何在 Docker 容器中正确安装 Django 包,我是否正确安装?

虽然问题是关于在 Docker 容器中安装 Django 包,但解决方案要简单得多。

我应该更加注意的两个事实:

  1. 在容器内安装 django-crispy-forms 后,我可以在本地 PipfilePipfile.lock 中看到适当的条目(向@MichalKrejčí 致敬)
  2. 重建映像并 运行 之后,Django 服务器 没有 崩溃 ModuleNotFoundError: No module named 'crispy_forms'

所有这些都意味着软件包已成功安装,还有其他事情正在发生。

这是我必须手动包含 Bootstrap4 CSS 文件以根据 Bootstrap4 模板呈现表单的脆皮表单的事实。

首先,您应该停止您的容器

docker-compose down

其次,激活你的本地环境 如果使用 pipenv

pipenv shell
pipenv install django-crispy-forms

第三,重建你的容器

docker-compose up -d --build

最后,再次停止您的容器并且

docker-compose up -d