Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Docker容器中安装Django包_Django_Docker_Django Crispy Forms - Fatal编程技术网

无法在Docker容器中安装Django包

无法在Docker容器中安装Django包,django,docker,django-crispy-forms,Django,Docker,Django Crispy Forms,我正在尝试在Docker容器中安装一个简单的Django包 这是我的文件 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 compose: versi

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

这是我的文件

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 compose:

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
中,并使用
{%load crispy_forms_tags%}
在本地html文件中注册crispy forms标记,然后将它们用于
{form|crispy}
中的表单

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


因此,问题是如何在Docker容器中正确安装Django软件包,我是否正确安装了它?

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

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

  • 在容器中安装
    django crispy forms
    后,我可以在本地
    Pipfile
    Pipfile.lock
    中看到相应的条目(帽子尖指向@MichalKrejč)
  • 在重建映像并运行它之后,Django服务器没有崩溃,出现了
    ModuleNotFoundError:没有名为“crispy_forms”的模块
  • 所有这一切都意味着软件包安装成功,并且还有其他一些事情正在进行


    事实上,我必须手动包含用于crispy forms的Bootstrap4 CSS文件,以便根据Bootstrap4模板呈现表单。

    您能否验证在
    docker compose exec…
    docker compose down
    之后,但在
    docker compose up-d--build
    之前,
    django crispy forms
    已添加到本地文件系统中的PIP文件?还有,为什么需要将包添加到容器中?如果在构建容器之前添加它,它会工作吗?@MichalKrejčí是的,一旦我在容器内安装了
    django crispy forms
    并关闭它,我就可以在本地
    Pipfile
    Pipfile.lock
    中看到
    django crispy forms
    条目。关于第二条评论-我在某个地方读到,这是一种更好的做法,因为本机操作系统和Docker操作系统不同,如果我在本地安装
    Pipfile.lock
    中的依赖关系图,那么在容器中部署时,lock将不正确。@MichalKrejč,在不进行重建的情况下,尝试将适当的条目添加到本地
    settings.py
    和html文件中,容器内运行的web服务器会因
    ModuleNotFoundError:没有名为“crispy\u forms”的模块而崩溃。