我正在尝试在 Docker 容器中安装一个简单的 Django 包。
这是我的 dockerfile
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 文件中注册脆皮表单标签,然后将它们用于带有 {{ form|crispy }}
的表单
但是表单没有正确呈现。
由于包本身及其用法非常简单,我认为将包安装在容器中存在问题。
那么问题是如何在 Docker 容器中正确安装 Django 包,我这样做是否正确?
答案 0 :(得分:0)
虽然问题是关于在 Docker 容器中安装 Django 包,但解决方案要简单得多。
我应该密切关注的两个事实:
django-crispy-forms
后,我可以看到适当的条目出现在本地 Pipfile
和 Pipfile.lock
(给@MichalKrejčí 的提示)ModuleNotFoundError: No module named 'crispy_forms'
所有这一切都意味着该软件包已成功安装,并且正在发生其他事情。
事实上,我必须手动包含用于脆皮表单的 Bootstrap4 CSS 文件,以便根据 Bootstrap4 模板呈现表单。
答案 1 :(得分:0)
首先,你应该停止你的容器
docker-compose down
第二,激活你的本地环境 如果使用pipenv
pipenv shell
pipenv install django-crispy-forms
第三,重建你的容器
docker-compose up -d --build
最后,再次停止你的容器
docker-compose up -d