前言
在开发完成之后,我们所有的应用,都是要部署到生产环境中的,而docker的出现,让我们看到了容器式部署的好处,就是便捷。
打包
安装docker和开发web应用我就不多说了,既然能了解到这里,那这些步骤相信对大家来说都是小菜一碟。
我们从打包开始,首先就是我们使用的Gunicorn的配置,在项目根目录下新建一个
gunicorn.conf.py
import multiprocessing
workers=3 # 并行工作进程数
threads = 2 # 指定每个工作者的线程数
bind=['0.0.0.0:8000'] # 监听内网端口8000
proc_name='yawp' # 进程名称
pidfile='/tmp/yawp.pid' # 设置进程文件目录
worker_class='gevent' # 工作模式协程
timeout=30 # 超时
errorlog = '/home/gunicorn.error.log' # 发生错误时log的路径
accesslog = '/home/gunicorn.access.log' # 正常时的log路径
然后我们改完项目的一些配置之后,在根目录下新建一个Dockerfile
,注意,名字一定要正确,没有任何的后缀,不要自行脑补
FROM python:3.7
WORKDIR /Project/你的项目名
COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY . .
ENV LANG C.UTF-8
CMD ["gunicorn", "Blue_Lake.wsgi:application","-c","./gunicorn.conf.py"]
给不懂Dockerfile命令的同志讲解一下,Dockerfile一般有以下几个基础命令
基础镜像,以哪个镜像作为基础进行制作,用法是FROM基础镜像名称
维护者信息,需要写下该Dockerfile编写人的姓名和邮箱,用法是MIANTAINER
名字/邮箱
镜像操作命令,对基础的镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN命令
容器启动命令,当基于该镜像的容器启动时需要执行哪些命令,常见的是CMD命令或ENTRYPOINT命令
然后准备工作完成后,我们就可以进行打包了
docker build -t 项目名 .
第一次打包可能会比较慢,如果遇到网络问题,重复执行打包命令即可
还有一件事,重复执行打包命令,会产生空悬镜象,这个解决办法请自行百度,不过不占用我们的空间,不管他也没有事。
然后键入命令docker images
就可以在看到你的项目镜像了,如果想把这个打包好的项目导出,只需要执行
docker save -o 你要导出的文件名.tar 镜像名
这样你就可以把他装进U盘,随时带走,也可以进行docker push操作将其上传到dockerhub上。
然后启动项目
docker run --name 容器名 -d -p 8000:8000 镜像名
以前也写过一篇类似的攻略,不过当时有点懵懂,所以,我又再次写了一篇攻略,另外,还有一些细小的命令,比如挂载和复制出来。
docker cp 4570:/Project/你的项目/settings.py 宿主机地址/settings.py
这种场景主要是体现在我们需要修改某些配置的时候,我们需要知道的是,不同的项目打包完之后,项目目录并不是你所熟知的项目目录,就比如我这个django项目,打包完成之后,他的容器内部项目结构是这样的。

我们所熟知的项目,就在Project里。
然后修改,可以使用vim,也可以使用别的,这都无所谓了。修改完之后,怎么将这个给挂载回去呢,这时候,需要用到我们的-v命令。
docker run --name 你的镜像名 -d -p 8001:8000 -v /宿主机文件地址/settings.py:/Project/你的项目/settings.py 镜像名
docker的部署,就是这么简单,比一条条的输入命令要强的多了吧。
- Post link: https://www.godhearing.cn/docker-bu-shu-django-ying-yong/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.