CentOS7.6 Docker+Gunicorn部署Flask

安装Docker

[root@ecs-9e76 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@ecs-9e76 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@ecs-9e76 ~]# yum makecache fast
[root@ecs-9e76 ~]# yum install -y docker-ce-19.03.9 docker-compose

创建Flask测试项目

[root@ecs-9e76 ~]# mkdir flasktest
[root@ecs-9e76 ~]# cd flasktest

[root@ecs-9e76 flasktest]# vi app.py

内容如下:

# -*- coding:utf-8 -*-
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == "__main__":
    app.run()

创建Gunicorn配置

[root@ecs-9e76 flasktest]# vi gun.conf

内如如下:

bind = '0.0.0.0:8001'
backlog = 512
timeout = 30
worker_class = 'gevent'
workers = 4
threads = 8
loglevel = 'info'
accesslog = "gunicorn_access.log"
errorlog = "gunicorn_error.log"
reload=True

创建Dockerfile

[root@ecs-9e76 flasktest]# vi Dockerfile 

内容如下:

FROM python:3.7
MAINTAINER "xx<xx@xx.com>"

ENV PIPURL "https://repo.huaweicloud.com/repository/pypi/simple"
WORKDIR /flasktest

COPY . .
RUN pip --no-cache-dir install  -i ${PIPURL} --upgrade pip
RUN pip --no-cache-dir install  -i ${PIPURL} gunicorn flask gevent

CMD gunicorn  -c gun.conf app:app

构建Docker镜像

[root@ecs-9e76 flasktest]# docker build . -t=flask-test:latest

验证Docker镜像

[root@ecs-9e76 flasktest]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
flask-test   latest    b1496afce06d   2 minutes ago   943MB
python       3.7       869a8debb0fd   10 days ago     903MB

运行Docker镜像

[root@ecs-9e76 flasktest]# docker run -it -p 80:8001 --name="flask-test" -d flask-test

查看正在运行的容器

[root@ecs-9e76 flasktest]# docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                  NAMES
b2b8fabfd61a   flask-test   "/bin/sh -c 'gunicor…"   1 minutes ago   Up 1 minutes   0.0.0.0:80->8001/tcp   flask-test

测试

[root@ecs-9e76 flasktest]# curl 127.0.01
Hello, World!

优化

创建的镜像文件较大,通过观察可知文件较大主要因为Python3.7较大,因此可改用其他尺寸较小的Python镜像,比如python:3.7-slim

通过观察可知,使用python:3.7-slim镜像构建的镜像尺寸小了近800M。

[root@ecs-9e76 flasktest]# docker images
REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
flask-test   v2         7dacd036b8a2   9 seconds ago   160MB
flask-test   v1         aac1d385c323   3 hours ago     943MB
python       3.7-slim   e7de75b2cb5a   10 days ago     120MB
python       3.7        869a8debb0fd   10 days ago     903MB

Dockerfile内容如下:

FROM python:3.7-slim
MAINTAINER "xx<xx@xx.com>"

ENV PIPURL "https://repo.huaweicloud.com/repository/pypi/simple"
WORKDIR /flasktest

COPY . .
RUN pip --no-cache-dir install  -i ${PIPURL} --upgrade pip
RUN pip --no-cache-dir install  -i ${PIPURL} gunicorn flask gevent

CMD gunicorn  -c gun.conf app:app
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值