python测试开发django-83.Dockerfile部署django项目
前言
现在流行用 docker 部署环境,python 开发的 django 项目也可以写个 Dockefile 文件,方便docker部署。 django 是依赖于python环境的,所有镜像制作是用一个python的镜像基础上把我们需要的环境添加过去就可以了。
Dockefile 文件
Dockefile的编写参考前面这篇https://www.cnblogs.com/yoyoketang/p/11397597.html
FROM python:3.6.8
MAINTAINER yoyo <283340479@qq.com>
# 更新下apt列表
RUN apt-get update
# 更新pip
RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple
# 工作目录
WORKDIR /code
ADD . /code
# pip安装依赖包
RUN pip install -r requirements.txt --index-url https://pypi.douban.com/simple
# 打开容器的8000端口
EXPOSE 8000
# 执行命令行,启动django服务
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
requirements.txt 是django项目需要的依赖包,是开发完 django 项目之后,通过 pip 生成的
pip freeze >requirements.txt
Dockefile 和requirements.txt都是放到 django 项目的根目录下
build镜像
Dockefile 文件完成后,其它小伙伴拿到项目源码包,就可以在任意地方部署了。 把整个代码包放到 linux 服务器上,使用 docker 来 build 一个镜像
docker build -t django_yoyo .
这时候会看到build的步骤,等依赖包安装完成
[root@VM_0_2_centos yoyo]# docker build -t django_yoyo .
Sending build context to Docker daemon 7.729MB
Step 1/9 : FROM python:3.6.8
---> 48c06762acf0
Step 2/9 : MAINTAINER yoyo <283340479@qq.com>
---> Using cache
---> 791e4b982a47
Step 3/9 : RUN apt-get update
---> Using cache
---> 4d9a2088753e
Step 4/9 : RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple
---> Using cache
---> d896cb71a359
Step 5/9 : WORKDIR /code
---> Using cache
---> c4d15025b172
Step 6/9 : ADD . /code
---> 8dcd424c81cd
Step 7/9 : RUN pip install -r requirements.txt --index-url https://pypi.douban.com/simple
---> Running in 8b84c81bfe5e
Step 8/9 : EXPOSE 8000
---> Running in d02c088d286d
Removing intermediate container d02c088d286d
---> 87bda6266abe
Step 9/9 : CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
---> Running in 1e616dd15c29
Removing intermediate container 1e616dd15c29
---> 984e5b0a9896
Successfully built 984e5b0a9896
Successfully tagged django_yoyo:latest
当看到 Successfully built
镜像就制作完成了,可以使用docker images查看镜像
[root@VM_0_2_centos yoyo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
django_yoyo latest 984e5b0a9896 58 seconds ago 1.2GB
这是本地镜像的制作过程,有镜像仓库的小伙伴,上传到镜像仓库,其它小伙伴部署起来更方便,直接通过docker pull就可以拉到镜像了。 镜像仓库上传参考这篇https://www.cnblogs.com/yoyoketang/p/11923263.html
启动容器
docker run
运行容器,将容器8000端口映射到宿主机8000端口
docker run -it -p 8000:8000 —name web_yoyo1 -d django_yoyo
查看容器状态’docker ps -a’查看容器是否是Up状态
[root@VM_0_2_centos yoyo]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ffd12bbbc16a django_yoyo "python manage.py ru…" About a minute ago Up About a minute 0.0.0.0:8000->8000/tcp
容器启动成功就可以访问django项目的页面了
- 关于ORA-01555的问题分析(r5笔记第87天)
- 项目工具类
- AJAX常见面试题
- 干货 | Tomcat类加载机制触发的Too many open files问题分析
- 并行查询缓慢的问题分析(r5笔记第86天)
- Swagger文档转Word 文档
- AJAX应用【股票案例、验证码校验】
- IT中的闰秒问题(r5笔记第85天)
- 浅谈exp/imp(下) (r5笔记第84天)
- 多线程编程学习五(线程池的创建)
- 再学习之Spring(面向切面编程).
- Hybris CronJob
- tomcat源码编译和环境搭建(r5笔记第83天)
- NumPy 将停止支持 Python 2,这里有一份给数据科学家的 Python 3 使用指导
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SAP UI5和React的页面渲染性能比较
- SAP CDS view自学教程之一:如何测试基于SAP CDS view自动生成的OData服务
- SAP CDS view自学教程之二:当SAP CDS view被激活时,背后发生了什么
- SAP Fiori Elements原理介绍之类型为Value Help的Smart Field工作原理
- 万字详述 MySQL ProxySQL
- 在SAP WebClient UI里使用AJAX进行异步数据读取
- Angular Component TypeScript代码和最后转换生成的JavaScript代码比较
- 如何使用Angular FormBuilder
- Angular HTML template的解析位置
- Angular FormBuilder的工作原理
- Angular HTTPClient的使用方法
- nodejs错误:PayloadTooLargeError: request entity too large
- 富文本编辑器 tinymce 的使用
- dotnet core 在 MAC 系统下删除应用程序自己后调 Process Start 方法将会抛出 Win32 异常
- 如何从高德获取地铁数据