gpt4 book ai didi

python - Dockerize 现有的 Django 项目

转载 作者:太空狗 更新时间:2023-10-30 01:19:22 25 4
gpt4 key购买 nike

我不知道如何对现有的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com