docker 部署python,gunicorn,flask

python容器部署

1. 下载镜像 下载镜像地址 我们此处下载

docker pull python:3.9.21

2. 容器部署

docker run --restart always -itd -p 9081:9081 --name python-3.9.21 -v /Users/ethanxu/Docker/www/htdocs:/go --privileged=true python:3.9.21
# 说明
--name python-3.9.21 : 把容器命名为python-3.9.21
-itd: i 以交互模式运行容器 t  为容器重新分配一个伪输入终端 d 后台运行容器,并返回容器ID 注意如果不加上it的话她或运行Python容器后自动关闭
-v /data/www/htdocs/:/www :将主机中/data/www/htdocs/目录挂载到容器的/www

3. 测试 在/data/www/htdocs目录下新建hello.py文件,内容为

#!/usr/bin/python

print("Hello World!")

4. 在终端输入

docker exec -it python python /www/hello.py

flask应用部署

1. 创建自定义网络

docker network create --subnet=172.18.0.0/16 mynetwork

2. 删除原python镜像, 创建新对象

docker rm -f python
docker run --net mynetwork --ip 172.18.0.5 -p 8000:8000 --name python -itd -v /data/www/htdocs/:/www python

3. 安装扩展

在/data/www/htdocs目录下新建requirements.txt文件

flask

gunicorn

gevent

markdown

flask_bootstrap

如果你要安装其他拓展的话在requirements.txt文件中添加相关插件即可(注意一个插件换一行)

在终端输入如下命令进行安装:

# 使用国内镜像https://pypi.tuna.tsinghua.edu.cn/simple
docker exec -it python pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /www/requirements.txt

4. gunicorn配置

在/data/www/htdocs目录下新建gunicorn.conf.py文件

# 并行工作进程数

workers = 4

# 指定每个工作者的线程数

threads = 2

# 监听内网端口8000

bind = '0.0.0.0:8000'

# 设置守护进程,将进程交给supervisor管理

daemon = 'true'

# 工作模式协程

worker_class = 'gevent'

# 设置最大并发量

worker_connections = 2000

# 设置进程文件目录

pidfile = '/var/run/gunicorn.pid'

# 设置访问日志和错误信息日志路径

accesslog = '/var/log/gunicorn_acess.log'

errorlog = '/var/log/gunicorn_error.log'

# 设置日志记录水平

loglevel = 'warning'

5. 增加gunicorn启动文件

在/data/www/htdocs目录下新建gunicorn.py文件

import os

import sys

def start():

    cmd = 'cd /www/eblog; gunicorn -c gunicorn.conf.py eblog:app'

    os.system(cmd)

def stop():

    cmd = "ps -ef | grep '/usr/local/bin/gunicorn' | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1"

    os.system(cmd)

def restart():

    stop()

    start()

if sys.argv[1] == 'start':

    start()

elif sys.argv[1] == 'restart':

    restart()

elif sys.argv[1] == 'stop':

    stop()

else:

    print('params error!')

6. 启动gunicorn

docker exec -i python python /www/gunicorn.py start

精选应用推荐

安全便捷的密码管理工具
安全加密 跨设备同步 一键填充 免费使用
云幻梦密码本 - 安全密码管理
★★★★★
4.8 (12万+评价)
云幻梦密码本是一款专业级密码管理工具,采用银行级加密技术保护您的所有密码和个人信息。支持跨设备同步、一键自动填充、安全密码生成和生物识别登录等功能,让您的数字生活更加安全便捷。
应用截图
📦 68.5 MB
🔄 版本 2.5.1
📱 Android 8.0+
500万+下载

资源搜索推荐

一站式资源搜索平台
资源搜索 多源聚合 免费使用 无广告
千搜123 | 资源搜索
🔍
智能搜索
📁
多类资源
快速响应
🛡️
安全访问
千搜123是一个强大的资源搜索网站,聚合了多种资源搜索引擎,提供文档、软件、影视、音乐、学习资料等多种资源的快速搜索服务。界面简洁无广告,搜索结果精准,是您寻找各类资源的得力助手。
  • 聚合多个优质资源搜索引擎,一站式搜索
  • 支持文档、软件、影视、学习资料等多种资源类型
  • 界面简洁,无干扰广告,专注搜索体验
  • 搜索结果快速准确,节省您的时间
🌐 网站访问
无需下载
📅 持续更新
👨‍💻 免费服务

0 评论
最新
最旧 最多投票
内联反馈
查看所有评论
滚动至顶部