说明:
这里主要讲如何用Docker启动一个Django项目,所以一些高级的部署方式,比如说用nginx管理等都没有涉及。
引用文章:https://blog.csdn.net/BlueBlueSkyZ/article/details/89083285
1、安装
参考文章:https://www.cnblogs.com/daxnet/p/7719574.html
2、项目准备
在window下准备好项目文件,并在文件根目录下创建两个子文件(pip.conf看个人需要进行创建)
文件说明:
pip.conf 这是pip的配置文件,主要是替换下载源可选择阿里、清华、豆瓣等
这里选择阿里:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
requirements.txt
自己项目所需的依赖库(文件名称可以随意命名):
文件生成命令,打开终端输入pip freeze > requirements.txt
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"]
这个解释比较全面:http://www.dockone.io/article/3656
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文件,随便给镜像取个名字test,后面的.
表示当前文件夹,会自动寻找Dockerfile文件并执行。
docker build -t test .
系统会一行一行执行,因为Dockerfile就是分层执行的,失败了会回滚。
运行容器
镜像完成我们就可以通过镜像制作容器了。-d
表示开启守护进程模式将我们的项目后台挂起,-p
映射端口,这边我就没改。。有时候搞不清楚,前面的是本机的端口,后面的是Docker内部镜像的端口,这边开放的端口由上面Dockerfile文件指定过。
docker run -d -p 8080:8080 my-python-app
访问
直接在浏览器内输入localhost:8080
,即可查看效果。
打包
完成本机打包之后,我们需要提交到云服务器上,有了Docker再也不用一步一步复制,安装环境,然后调试了。如果本机Docker测试通过,即表示该镜像可用,可以真正做到了一次部署,随处使用。
修改名称
需要根据你的用户名修改你镜像的名称,比我的用户名为hhh123456
,就需要在镜像前添加hhh123456
。
docker tag XXX hhh123456/XXX
如果不修改的话会报错:denied: requested access to the resource is denied
。因为默认是推送到library仓库中去的,当然没有权限
推送
直接填写完整的镜像名进行推送。
docker push hhh123456/XXX
拉取
连接远程主机,填写完整的镜像名进行直接拉取即可。
docker pull hhh123456/XXX
docker run -d -p 8080:8080 hhh123456/XXX
或者是直接运行
docker run hhh123456/xxx
通过域名或者IP对Django项目进行访问,至此完成云服务器上的部署。