基于docker+gunicorn部署sanic项目

news/2024/6/26 22:16:39

基于docker+gunicorn部署sanic项目

源代码: https://github.com/ltoddy/Python-useful/tree/master/sanic-app

最近云服务提供商在打价格战,我在滴滴云上花了很少的钱租了一个月的云服务器:
公网ip是: 116.85.42.182, 以下我以116.85.42.182这个ip为演示,当你自己在部署的时候请换乘自己的ip地址.

买完服务器之后,你会得到一个公网ip,你可以通过ssh命令连接上你的服务器.

ssh dc2-user@116.85.42.182

顺便提一句,滴滴云给你创建的账户叫"dc2-user",你需要自己设置root的密码.

然后安装docker:

sudo apt-get install docker.io

演示一个最小的sanic-app,来部署一下.

这是项目树(目录).

.
├── app.py
├── Dockerfile
└── templates└── index.html1 directory, 3 files

app.py

import osfrom sanic import Sanic
from sanic.response import html
from sanic.response import HTTPResponse
from jinja2 import Environment, FileSystemLoaderapp = Sanic(__name__)
base_dir = os.path.abspath(os.path.dirname(__name__))
templates_dir = os.path.join(base_dir, 'templates')
jinja_env = Environment(loader=FileSystemLoader(templates_dir), autoescape=True)def render_template(template_name: str, **context) -> str:template = jinja_env.get_template(template_name)return template.render(**context)@app.route('/')
async def index(request) -> HTTPResponse:return html(render_template('index.html'))

这里的python代码,用到了sanic框架和jinja2木板引擎,所以带会需要安装这两个依赖.

Dockerfile

FROM taoliu/gunicorn3WORKDIR /codeADD . /codeRUN pip install sanic \&& pip install jinja2EXPOSE 8080CMD gunicorn app:app --bind 0.0.0.0:8080 --worker-class sanic.worker.GunicornWorker

第一行那里"FROM taoliu/gunicorn3",由于没找到合适的Python3的gunicorn的基础镜像,所以我自己做了一个,方便所有人使用.

RUN pip install sanic && pip install jinja2 这里,来安装那两个依赖.

CMD gunicorn app:app --bind 0.0.0.0:8080 --worker-class sanic.worker.GunicornWorker 这行,是镜像运行他所以执行的命令.

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>ltoddy's home</title><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.css">
</head>
<body>
<div class="container"><div class="page-header"><h1>Welcome</h1></div>
</div>
</body>
</html>

然后把这些文件传到服务器上:

scp -r * dc2-user@116.85.42.182:~

然后ssh连上我们的服务器,去构建我们的docker镜像(这个过程有些漫长,具体看网速.)

docker build -t sanic-demo .

docker images

来查看一下当前拥有的镜像

然后后台运行docker镜像:

docker run -d --restart=always -p 5000:8080 sanic-demo:latest

这时候打开浏览器输入: 116.85.42.182:5000 来看看效果吧.

最后说明一点,去滴滴云那里的防火墙规则那里,添加5000端口的规则.

https://img.vim-cn.com/00/b211cca5695de1c1c71ddf48faa4916cf441c6.png


http://lihuaxi.xjx100.cn/news/273551.html

相关文章

经典算法题之Maximal Square

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达作者&#xff1a;叶 虎Maximal Square是道非常有意思的算法题。它是一个典型的动态规划问题&#xff0c;同时也是2017京东面试题&#xff0c;2016华为机考题。1题目描述…

android编程fragment,Android中关于FragmentA嵌套FragmentB的问题

问题描述&#xff1a;在项目中Activity A中嵌套Fragment B&#xff0c;Fragment B中再嵌套Fragment C&#xff0c;如图&#xff1a;问题1:在点击Activity A中主菜单1进行切换时&#xff0c;报错Fragment C already added。解决&#xff1a;在Framgent B中添加Fragment C 调用ad…

抗击疫情!阿里云为加速新药疫苗研发提供免费AI算力

1月29日&#xff0c;阿里云正式宣布&#xff1a;疫情期间&#xff0c;向全球公共科研机构免费开放一切AI算力&#xff0c;以加速本次新型肺炎新药和疫苗研发。 目前&#xff0c;中国疾控中心已成功分离病毒&#xff0c;疫苗研发和药物筛选仍在争分夺秒地进行。新药和疫苗研发期…

为什么要放弃 Lombok ?

点击上方“方志朋”&#xff0c;选择“设为星标”回复”666“获取新整理的面试文章作者 &#xff1a;ramostear来源 &#xff1a;http://suo.im/5DZBh3如果您正在阅读此文&#xff0c;想必您对Project Lombok已经有了一段时间的了解。您是否正准备拥抱Lombok?还是正准备将如此…

神了!阿里资深大牛熬夜整理Python学习路线,终于开放了

相信大家学习Python最苦恼的就是不知从何入手&#xff0c;或入门之后不知如何进阶。 为了帮助大家顺利成为Python高手&#xff0c;我特地整理了这篇学习攻略&#xff0c;希望能帮大家找到学习的方向。 Python入门 Python是一门相对来说入门比较容易的编程语言&#xff0c;不…

linux open 缓冲区,Linux上文件的默认缓冲区大小

小编典典由于您链接到2.7文档&#xff0c;因此我假设您使用的是2.7。(在Python 3.x中&#xff0c;这一切都变得更加简单&#xff0c;因为在Python级别上公开了更多的缓冲。)所有open实际上做(在POSIX系统)是调用fopen&#xff0c;然后&#xff0c;如果你已经通过了什么bufferin…

算法详解

摘要 昨天&#xff0c;由于比赛严禁在5月31日当天通过任何渠道传播、讨论题目、解答方法和程序。网易“有道难题”打电话&#xff0c;特别声明&#xff0c;让我暂时删掉关于这两道算法的随笔&#xff0c;哈哈&#xff0c;吓我一跳&#xff0c;我差点泄题&#xff0c;不过遵循她…

高盛:人工智能生态报告 最全AI产业盘点

高盛&#xff1a;人工智能&#xff08;AI&#xff09;生态报告 近日&#xff0c;高盛最新推出了一份讲解人工智能生态的重磅报告《2016高盛人工智能(AI)生态报告》(AI, Machine Learning and Data Fuel the Future of Productivity)(共99页)。报告从最基本的人工智能概念开始&a…