我无法解决如何将现有Django应用程序停靠的问题。 我已经通过Docker阅读this official manual来解释如何在创建Docker镜像期间创建Django项目,但我需要的是使用相同的方法将现有项目停靠。
这种方法的主要目的是我不需要一直在本地构建docker镜像,而是我想要实现的是将我的代码推送到一个远程存储库,该存储库附加了docker-hub观察器,并且代码库更新后,它将立即在服务器上自动构建。
现在我的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
(如果是:如何?)来实现我所描述的功能?
此问题的解决方案:
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
OR
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
答案 0 :(得分:1)
这个问题太宽泛了。您创建的Dockerfile会发生什么?
除非您有多个需要互动的容器,否则您不需要使用docker compose。
您当前的Dockerfile的一些一般性观察:
pip install -r requirements.txt
)中声明依赖项,并使用固定版本号(foopackage==0.0.1
)来确保可重复的构建。cd /code/; pip install .
)安装,而不是直接添加代码目录。答案 1 :(得分:1)
答案 2 :(得分:1)
我实际上在https://rehalcon.blogspot.mx/2018/03/dockerize-your-django-app-for-local.html
中写了一篇关于此的文章我的情况非常相似,但是它为代码机密添加了MySQL数据库服务和环境变量,以及使用docker-compose
(在macOS中需要)。我也使用python:2.7-slim docker parten image来使图像更加错误(150MB以下)。