我不知道如何对现有的 Django 应用进行 docker 化。 我读过 this official manual通过 Docker 解释如何在创建 Docker 镜像期间创建 Django 项目,但我需要的是使用相同的方法对现有项目进行 dockerize。
这种方法的主要目的是我不需要一直在本地构建 docker 镜像,相反我想要实现的是将我的代码推送到一个远程存储库,该存储库附加了 docker-hub watcher 并且作为一旦代码库更新,它就会在服务器上自动构建。
现在我的 Dockerfile 看起来像:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install Django
RUN pip install djangorestframework
RUN pip install PyQRCode
ADD . /code/
谁能解释一下我应该如何编写 Dockerfile 以及我是否需要使用 docker-compose.yml
(如果是:如何?)来实现我描述的功能?
Solution for this question:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
RUN pip install *name of package*
RUN pip install *name of another package*
ADD . /code/
EXPOSE 8000
CMD python3 manage.py runserver 0.0.0.0:8000
或
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
EXPOSE 8000
CMD python3 manage.py runserver 0.0.0.0:8000
requirements.txt 应该是一个简单的包列表,例如:
Django==1.11
djangorestframework
pyqrcode
pypng
最佳答案
这个问题太宽泛了。您创建的 Dockerfile 会怎样?
除非您有多个需要交互的容器,否则您不需要 docker compose。
当前 Dockerfile 的一些一般观察结果:
- 最好将 pip install 命令合并为一条语句。在 docker 中,每个语句都会创建一个文件系统层,而 pip install 命令之间的层可能没有任何用处。
- 最好在 setup.py 或 requirements.txt 文件 (
pip install -r requirements.txt
) 中声明依赖项,并使用固定版本号 (foopackage==0.0.1
) 以确保可重复构建。 - 我建议将您的 Django 应用程序打包到 python 包中并使用 pip 安装它(
cd/code/; pip install .
),而不是直接添加代码目录。 - 您缺少执行应用程序的语句(CMD 或 ENTRYPOINT)。参见 https://docs.docker.com/engine/reference/builder/#cmd
关于python - Dockerize 现有的 Django 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270587/