欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在远程服务器上,docker部署flask服务

程序员文章站 2024-03-13 16:35:09
...

docker基础,前置知识:https://blog.csdn.net/aoxixi/article/details/103334794
容器像一个正常的操作系统一样,所以在部署服务的时候,编写dockerfile,需要把启动该服务需要的依赖安装上。

1、保证项目在远程服务器上能够正常启动,正常访问

1、保证代码没问题
2、编写 用到的requirement.txt
3、把代码上传到服务器 
4、编写gunicorn.conf [flask项目启动,在linux环境下,必须要有一个可以提供http服务服务,类似于网关]
测试项目能否启动
gunicorn hello:app -c gunicorn.conf
5、curl http://127.0.0.1:5003#测试是否成功

hello.py

from flask import Flask

app = Flask(__name__)


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


if __name__ == '__main__':
    app.run(debug=True, port=5003)

requirement.txt

flask
gunicorn
gevent

gunicorn.conf

workers = 5 # 定义同时开启的处理请求的进程数目
worker_class = "gevent" # 采用gevent库,支持异步处理请求
bind = "0.0.0.0:5003" # 监听IP放宽,以便于Docker之间,Docker和 宿主机之间通信

项目目录:
在远程服务器上,docker部署flask服务

gunicorn 运行flask 成功:
在远程服务器上,docker部署flask服务

upload_file.py 上传代码到服务器
from fabric2 import Connection
import shutil

host = '127.0.0.1'
user = 'xxx'
password = 'xxx'

conn = Connection(host=host, user=user, connect_kwargs={'password': password}, port=22)
shutil.make_archive('docker_flask', 'gztar', '../Docker_flask')  # 将文件打包压缩
conn.put('docker_flask.tar.gz', '/home/testknpub')  # 推送到服务器
conn.run('tar -C /home/testknpub/docker_flask -zxvf /home/testknpub/docker_flask.tar.gz')  # 解压,注意权限问题

2、编写dockerfile

FROM python:3.8
MAINTAINER "ZYR"
WORKDIR /hello

ENV PIPURL "https://pypi.tuna.tsinghua.edu.cn/simple"

COPY requirement.txt ./
RUN pip install -i ${PIPURL} -r requirement.txt

copy . .

CMD ["gunicorn","hello:app","-c","./gunicorn.config.py"]

3、把项目以及项目的依赖,通过dockerfile,编译成image

sudo docker build -t 'docker_flask' .
sudo docker images

4、运行docker。

sudo docker run -it --rm -p 8888:8888 docker_flask

5、访问远程服务器上启动的flask

服务IP:端口

gunicorn + flask 简单示例

远程服务器上需要安装好启动flask所需要的环境 pip install flask。

gunicorn_demo.py

# gunicorn gunicorn_demo:app
[2017-12-23 10:36:09 +0000] [24441] [INFO] Starting gunicorn 19.7.1
[2017-12-23 10:36:09 +0000] [24441] [INFO] Listening at: http://127.0.0.1:8000 (24441)
[2017-12-23 10:36:09 +0000] [24441] [INFO] Using worker: sync
[2017-12-23 10:36:09 +0000] [24446] [INFO] Booting worker with pid: 24446
# curl http://127.0.0.1:8000/demo
gunicorn and flask demo.
相关标签: python