使用Docker本机部署Django项目

前言

因为项目环境配置太麻烦了,所以还是选用了Docker这个技术作为一个部署的解决方案。

这里主要讲如何用Docker启动一个Django项目,所以一些高级的部署方式,比如说用nginx管理等都没有涉及。

当然本机部署只是第一步,后面还是需要研究一下如何将整个容器打包运行到服务器上的,这里权且先做一个镜像测试一下吧。

过程

安装Docker

这里就跳过啦,教程应该一大推,三大系统都有。其中Windows比较麻烦一点,不过也不是不能用。

项目准备

我是使用的Pycharm直接创建了一个Django项目,然后在直接里面进行了编写,应该说还是很便捷的。
Django

文件准备

为了创建我们的环境,先要制作几个文件,位置的话就放在项目的主目录下。
文件

pip.conf

这个是pip的配置文件,制作完成之后,将这个文件复制到虚拟机对应的pip根目录下,即可完成替换。
主要功能是换成阿里云的镜像。

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

requirements.txt

这里是写你的python依赖库的,我这边依赖了下面这些,左边是库名,等号右边可以写版本号,不写默认latest。

Django==2.0.7
imageio
tensorflow
scikit-learn
opencv-python
hyperlpr

还有一种方式可以快速导出本机所有依赖,但是如果你本机装了很多库的话会很长。

pip freeze > requirements.txt

Dockerfile

这里就是关键了,docker将会使用这个文件进行构建。
比较特殊的是这个文件没有后缀名,所以像Mac就不能直接创建,使用touch命令执行生成。

touch Dockerfile

使用vim进入编辑。

vim Dockerfile

具体内容如下:

FROM python:3.6
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY pip.conf /root/.pip/pip.conf
COPY requirements.txt /usr/src/app/
RUN pip install -r /usr/src/app/requirements.txt
RUN rm -rf /usr/src/app
COPY . /usr/src/app
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8080"]

一行一行解释

  1. 以官方库python:3.6为基础进行制作,实际是一个装有python3.6的Linux
  2. 运行命令创建新文件夹 /usr/src/app
  3. 确定工作路径
  4. 将本地的pip.conf复制到pip的根中进行替换
  5. requirements.txt复制到指定目录下
  6. 运行命令按照requirements.txt的内容进行pip安装
  7. 运行命令删除这个文件夹中的所有内容,-rf是递归强制删除
  8. 将整个项目复制到这个文件夹中
  9. 执行命令运行Django项目的启动文件,并开放8080端口

制作镜像image

这里就是执行这个Dockerfile文件了,随便给镜像取个名字my-python-app,后面的.表示当前文件夹,会自动寻找Dockerfile文件并执行。

docker build -t my-python-app .

系统会一行一行执行,因为Dockerfile就是分层执行的,失败了会回滚。

运行容器

镜像完成我们就可以通过镜像制作容器了。
-d表示开启守护进程模式将我们的项目后台挂起,-p映射端口,这边我就没改。。有时候搞不清楚,前面的是本机的端口,后面的是Docker内部镜像的端口,这边开放的端口由上面Dockerfile文件指定过。

docker run -d -p 8080:8080 my-python-app

访问

直接在浏览器内输入localhost:8080,即可查看效果。


参考链接:

  1. https://my.oschina.net/esdn/blog/799784
  2. https://blog.csdn.net/larger5/article/details/81252773
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值