无法在Docker容器中安装Django包
我正在尝试在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
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č)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”的模块而崩溃。