出于寻找Docker对Python相关项目部署的学习,找到腾讯课堂NEXT公开课中【Docker构建Python Web环境】的课程,本文对其进行内容梳理及知识点汇总。

该课程总计6小时左右,是个适合小白入门Docker部署的基础课程。课程主要章节内容如下:

系统及软件配置:

Win10 + CentOS7 + Python3 + MySQL8 + PyCharm  + VMware15 pro + MobaXterm + Navicat Premium 12

一、基础篇

1、CentOS默认安装了Python2,可以再安装Python3,原有Python2不做卸载,CentOS7存在对Python2程序依赖。

2、yum命令不能直接安装Python,需先安装epel源

yum install epel-release

3、Linux各文件夹含义

 1 /boot 该目录默认下存放的是Linux的启动文件和内核。
2 /bin 该目录中存放Linux的常用命令。
3 /sbin 该目录用来存放系统管理员使用的管理程序。
4 /var 该目录存放那些经常被修改的文件,包括各种日志、数据文件。
5 /etc 该目录存放系统管理时要用到的各种配置文件和子目录,例如网络配置文件、Mysql配置文件。
6 /dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,如打印机等。
7 /mnt 临时将别的文件系统挂在该目录下。
8 /root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录。
9 /home 如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。
10 /usr 用户的应用程序和文件几乎都存放在该目录下。
11 /lib 该目录用来存放系统动态链接共享库,几乎所有的应用程序都会用到该目录下的共享库。
12 /opt 第三方软件在安装时默认会找这个目录,所以你没有安装此类软件时它是空的,但如果你一旦把它删除了,以后在安装此类软件时就有可能碰到麻烦。
13 /tmp 用来存放不同程序执行时产生的临时文件,该目录会被系统自动清理干净。
14 /proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里。
15 /misc 可以让多用户堆积和临时转移自己的文件。
16 /lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。
17 文件颜色的含义:蓝色为文件夹;绿色是可执行文件;浅蓝色是链接文件;红框文件是加了SUID位,任意限权;红色为压缩文件;褐色为设备文件。

4、常用Linux命令

1 touch  #创建空白文件
2 rm -rf #删除文件或文件夹(-r 代表递归操作 -f代表强制删除)
3 mkdir #创建空文件夹
4 cd .. #返回上一层
5 tar #压缩解压缩,参数-cvf压缩,-xvf解压缩
#.tar是Linux上面特有的压缩文件格式,这种压缩文件可以保留文件的权限信息

二、Web篇

1、Flask框架跟Django比起来是一个轻量级的Web框架,它可以通过第三方扩展增加功能。

2、Flask有非常多的扩张库,开发者可以自由选择安装:

1 Flask-Admin:增加后台管理插件
2 Flask-Cache:连接Redis
3 Flask-Cors:ajax跨域
4 Flask-User:用户管理模块
5 Flask-Snow:雪花算法,生产全局唯一主键值
6 Flask-SSE:消息推送
7 Flask-SQLAlchemy:读写MySQL数据库
8 Flask-Uploads:接受浏览器上传的文件

3、Flask框架优点:

  1. 入门简单,可以通过官方指南便可以清楚的了解Flask的运作留存
  2. 支持MVC模型(Model-View-Controller)
  3. Falsk可以兼容多种数据库、模板
  4. Flask的路由以及路由函数由修饰器设定,开发人员不需要借助其他文件匹配

4、MVC模式:一个复杂的软件系统,通过抽象成模型层(Model)、视图层(View)和控制层(Controller),划分出明确的职责

5、Flask项目的蓝图功能可以把WEB函数定义到不同的模块中

6、Flask定义模块文件:首先创建Python文件,然后创建蓝图对象(Blueprint),把Web函数注册到蓝图对象上面,最后再把蓝图对象注册给Flask对象。

7、Flask模块语言:

  1. Flask支持动态页面技术,在后台渲染出动态HTML页面
  2. Jinja2是Python下一个被广泛应用的模板引擎,语法简单易学
  3. Flask中的模板文件存放在templates目录,图片、样式和脚本存放在static目录

8、WEB方法中,render_template()函数用来把模板文件渲染成动态HTML

9、模板文件中,双大括号({{变量/表达式}})可以对模板页面插值

10、部署Python项目的时候,为了不泄露Python程序代码,所有我们要编译Python程序(pycharm项目文件夹会自动生成pyc文件)

11、Flask只允许本机访问5000端口,如果外机访问,需修改python源代码,app.run(host='0.0.0.0')

12、Linux开发5000端口持久生效:

1 firewall -cmd --zone=pulic --add-port=5000/tcp --permanent

 三、Docker篇

1、虚拟化部署环境的重要性:

  1. 直接把程序按照或者部署在Linux操作系统上,很容易引发资源冲突(比如CentOS自带MariaDB数据库,再安装MySQL数据库会冲突)
  2. 程序卸载不干净,导致无法安装或部署新程序
  3. 每次部署之前要安装很多软件,修改复杂的配置文件
  4. 无法让服务器硬件资源实现多租户服务
  5. 增大了在Linux系统上部署集群和分布式的难度

2、Vmware和Docker对比:

  1. Vmare是重量级虚拟机,每个虚拟实例都虚拟了完整的硬件环境,所以对硬件要求较高
  2. Docker是轻量级虚拟机,只虚拟了少量的硬件设备,虚拟实例共享使用Linux内核

3、Docker是跨平台的轻量级虚拟机,但是在Window和MacOS上面有部分功能无法使用(Win10 有内置Linux虚拟机,故能运行Docker)

4、云计算中的Docker虚拟机:

5、SELINUX是CentOS系统捆绑的安全服务程序,因为安全策略太过严格,建议关闭,修改/etc/selinux/config文件,设置SELINUX=disabled

6、使用yum命令安装Docker服务即可

1 yum install docker -y #-y代表默认安装

7、DockerHub是Docker公共镜像仓库,为用户提供大量的镜像文件:https://hub.docker.com/,由于国内网络访问DockerHub很慢,无法下载镜像文件,可以使用Docker加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://n1mngx9r.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

8、Docker 包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。镜像是 Docker 运行容器的前提,仓库是存放镜像的场所。

9、什么是镜像:

  1. 为了快速打包和部署软件环境,Docker引入镜像机制
  2. 镜像是一个配置好的只读层软件环境
  3. 我们可以通过dockerfile文件创建出镜像,也可以从Docker仓库中下载到镜像

10、什么是容器:

  1. 容器是镜像基础之上创建出的虚拟实例,内容可读可写
  2. 一个Docker镜像可以创建出多个容器,而且容器直接相互隔离,部署的程序不会相互干扰
  3. 所有的容器直接使用书主机的Linxux内核、内存和硬盘,所以容器的性能非常接近于宿主机

11、常用Docker命令:

12、Docker网络环境:容器默认会分配动态IP地址,会导致下次启动容器时候IP地址发生变化,因此可以创建一个Docker内部网段:

docker network create --subnet=172.18.0.0/16 mynet #创建18网段名称为mynet
docker network rm mynet #删除mynet网段

13、创建容器示例(容器使用端口映射/目录挂载/网络分配技术):

docker run -it -d --name=p1 -p 9500:5000 -v /root/project:/root/project -net mynet --ip 172.18.0.2 python:3.8 bash
#创建容器,-d后台默认运行,--name容器名称p1,-p端口映射宿主机9500端口,-v目录挂载,-net使用mynet网络并分配ip,使用python3:3.8镜像,bash命令行界面

14、容器安装flask,可以使用国内镜像加快速度(sqlalchemy / mysql-connector-python):

docker exec -it p1 bash #进入p1容器
pip install flask -i https://pypi.tuna.tsinghua.edu.cn.simple/#清华大学镜像

15、用docker pull命令下载MySQL镜像(为确保部署没问题,Win端与Linux的各软件版本应尽量保持一致)

16、创建MySQL容器:

docker run --name m1 -p 4306:3306 --net mynet --ip 172.18.0.3 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql:8.0.18
#创建MySQL容器不需要加-it,--name容器名称,--net分配网络 -v目录挂载(数据库挂了文件仍能提取),-e用户密码 ,-d该容器创建即后台运行

17、创建Session类(用来连接数据库)

from sqlalchemy.orm import sessionmaker #用以创建session类
from sqlalchemy import create_engine #保存数据库连接信息
url="myslq+mysqlconnector://root:123456@192.168.99.49:4306/test" #数据库用户名密码地址端口及库名
engin=create_engine(url,pool_size=5) #数据库连接池对象个数
Session=sessionmaker(bind=engin) #创建session类

18、执行查询语句:先创建Session对象,然后才可以执行SQL语句,最后还要关闭数据库连接

session=Session()
sql="select empno,ename,job from t_emp"
cursor=session.execute(sql)
result=cursor.fetchall()
session.close()

补充常用Docker命令

docker中 启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)

  

最后补下课程链接:

https://ke.qq.com/course/478268?taid=4069730621541436

Docker构建Python Web环境的更多相关文章

  1. selenium结合docker构建分布式测试环境

    selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...

  2. selenium 结合 docker 构建分布式测试环境 (初学者视角)

    前言:随着自动化测试越学越深,深深觉得有太多的东西需要总结. 1.记录下学习中遇到的坑,当做学习笔记.2.有前人路过看到文章中比较落后的做法,请务必一定要指教.(因为是初学者视角,很多东西只是走通而已 ...

  3. Python学习1:使用Aptana构建Python开发环境

    使用Aptana构建Python开发环境 下载Aptana: http://www.aptana.com/products/studio3/download http://www.newasp.net ...

  4. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

  5. Atitit.python web环境的配置 attilax 总结

    Atitit.python web环境的配置 attilax 总结 1. 下载modpython/1 1.1. 安装python2.5.11 1.2. 安装modpython1 2. 设置py文件的u ...

  6. Docker教程:使用docker配置python开发环境

    http://blog.csdn.net/pipisorry/article/details/50808034 Docker的安装和配置 [Docker教程:docker的安装] [Docker教程: ...

  7. 零基础小白必看篇:从0到1构建Python Web框架

    造轮子是最好的一种学习方式,本文尝试从0开始造个Python Web框架的轮子,我称它为ToyWebF. 本文操作环境为:MacOS,文中涉及的命令,请根据自己的系统进行替换. ToyWebF的简单特 ...

  8. 用Docker打包Python运行环境

    虽然Docker作为部署环境打包镜像的工具,和我的科研并没有直接的关系.但我觉得在项目中运用Docker来打包环境依赖也可以大大提高工作效率,于是准备专门学习一下Docker. 1. Docker基础 ...

  9. Win7下Python WEB环境搭建

    环境介绍: Win7 64位 SP1 Python:2.7.6 网关接口:flup Nginx安装:http://blog.csdn.net/jacson_bai/article/details/46 ...

随机推荐

  1. tornado 作业 简单首页 登录页 个人中心

    s4 index.py 1 import tornado.ioloop 2 import tornado.web 3 import time 4 5 6 class IndexHandler(torn ...

  2. 移动端和PC端区分

    1.移动端包括:浏览器.ios/android.qq端.微信端 九度数据官网源码.修改,要跳转的链接即可. function browserRedirect() { var sUserAgent = ...

  3. Java中四舍五入

    1.Math中四舍五入的方法 Math.ceil(double a)向上舍入,将数值向上舍入为最为接近的整数,返回值是double类型 Math.floor(double a)向下舍入,将数值向下舍入 ...

  4. 精尽Spring MVC源码分析 - WebApplicationContext 容器的初始化

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  5. mysqldump: [ERROR] unknown variable 'database=test'.

    背景: 导出数据库test库的test表数据出现报错信息:mysqldump: [ERROR] unknown variable 'database=test'. 原来是my.cnf参数文件配置了以下 ...

  6. SpringBoot + SpringSecurity + Mybatis-Plus + JWT + Redis 实现分布式系统认证和授权(刷新Token和Token黑名单)

    1. 前提   本文在基于SpringBoot整合SpringSecurity实现JWT的前提中添加刷新Token以及添加Token黑名单.在浏览之前,请查看博客:   SpringBoot + Sp ...

  7. 3. 搞定收工,PropertyEditor就到这

    分享.成长,拒绝浅藏辄止.搜索公众号[BAT的乌托邦],回复关键字专栏有Spring技术栈.中间件等小而美的原创专栏供以免费学习.本文已被 https://www.yourbatman.cn 收录. ...

  8. [日常摸鱼]bzoj1036 [ZJOI2008]树的统计Count

    听说后天会考x 省选居然还考模板题的么(好吧好像NOI也有考而且也是树剖-) 题意:一棵树,每个点有权值,三种操作:单点修改.求链上最大值.求链上权值和. 直接上模板. 我可能不会写单点修改的线段树了 ...

  9. HCIP --- MPLS BGP 实验

    实验要求: 实验拓扑: 一.配置IP地址 二.给AS 2配置OSPF 1.R2-R7配置相同: 查看路由表: 可以看到,业务网段学的是32位的 修改:在R2-R7上都修改 [R2]int loo1[R ...

  10. 测试常用sql语句

    一.查询数值型数据:SELECT * FROM tb_name WHERE sum > 100;查询谓词:>,=,<,<>,!=,!>,!<,=>,=& ...