python3.6
centos7
django2.0
docker
yum -y install gcc
2、安装gcc-c++
yum -y install gcc-c++
3、安装其他安装包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、安装阿里云安装依赖包。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
此处我还出现过以下这种错误,是因为我电脑上有多个版本得python环境。
File "/bin/yum-config-manager", line 159
print yb.fmtSection('main')
^
SyntaxError: invalid syntax
只需要将第一行改为
#!/usr/bin/python2.7
5、安装dockerCE
sudo yum makecache fast
sudo yum -y install docker-ce
6、开启docker
sudo service docker start
1、构建一个简易版的web,创建一个空的项目目录。目录结构如图:
创建一个start.py启动文件,代码如下:
from flask import Flask
app = Flask(__name__) #记住这里的变量名app
@app.route('/')
def hello():
return 'hello docker&flask'
if __name__ == '__main__':
app.run(debug=True)
输入下面命令可以测试一下是否能正常跑起来,(必须在同级目录下的命令行输入)输入curl http://127.0.0.1:5000看到打印内容就算成功。
python start.py
2、安装Gunicorn + Gevent
guincorn是支持wsgi协议的http server,gevent只是它支持的模式之一 ,是为了解决django、flask这些web框架自带wsgi server性能低下的问题。它的特点是与各个web框架结合紧密,部署特别方便。
pip install gunicorn gevent
在创建目录下新建gunicorn.conf.py
workers = 5 # 定义同时开启的处理请求的进程数量,根据网站流量适当调整
worker_class = "gevent" # 采用gevent库,支持异步处理请求,提高吞吐量
bind = "0.0.0.0:80" #端口随便写,但是注意是否已经被占用。netstap -lntp
启动gunicorn,测试是否能正常跑起来
gunicorn start:app -c gunicorn.conf.py
1、在同级目录下创建requirements.txt
用来构建项目所需要的运行环境依赖
gunicorn
gevent
flask
2、在同级目录下创建dockerfile文件
在创建目录下新建一个dockerfile(建议名字就叫这个)
# 1、第一行必须指定 基础镜像信息
FROM python:3.6 #FROM 必须 是 Dockerfile 中第一条非注释命令
WORKDIR /var/www/html/your/project/ #指定工作目录
COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装依赖
COPY . .
CMD ["gunicorn", "start:app", "-c", "./gunicorn.conf.py"] #用于指定默认的容器主进程的启动命令
3、构建docker镜像(名字随意)
sudo docker build -t 'dockerName' . #我的叫docker_flask_web
可使用docker images查看镜像
4、将镜像推送到docker.
a、去官网地址创建一个docker账号,记住账号名
b、使用docker images找到本地镜像信息, 选择需要使用的镜像名称,我这里选择docker_flask_web:latest, 免得麻烦线上我也使用这个名字。
docker tag docker_flask_web:latest 账号名/线上标签名:latest
5、登录docker,输入账号密码
docker login
6、push上docker hub,成功之后可以登录docker网站查看是否已经存在。
docker push 账号名/线上名称:latest
7、pull下载到自己服务器
docker pull 账号名/线上名称:latest
如果很慢的话可以使用阿里云的加速,登陆阿里云镜像加速找到自己的加速地址,添加至/etc/docker/deamon.json
{
"registry-mirrors": ["阿里云加速器地址"]
}
8、临时运行docker镜像
sudo docker run -it --rm -p 80:80 docker_flask_web
可以看到Docker镜像成功地运行起来了,并处于阻塞状态。那么到这里 Flask 项目已经成功部署。
注:
列出本地实例: docker images
删除镜像 : docker image rm 镜像名:标签名
查看容器: docker container ls -a
查看当前运行容器: docker ps
停止容器: docker stop $CONTAINER_ID
参考博客:
https://yq.aliyun.com/articles/110806
https://blog.csdn.net/li1325169021/article/details/90780627
https://zhuanlan.zhihu.com/p/78432719
https://yeasy.gitbooks.io/docker_practice/image/pull.html