基于docker+gunicorn部署sanic項目

基于docker+gunicorn部署sanic項目

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

最近云服務提供商在打價格戰(zhàn),我在滴滴云上花了很少的錢租了一個月的云服務器:
公網ip是: 116.85.42.182, 以下我以116.85.42.182這個ip為演示,當你自己在部署的時候請換乘自己的ip地址.

買完服務器之后,你會得到一個公網ip,你可以通過ssh命令連接上你的服務器.

ssh dc2-user@116.85.42.182

順便提一句,滴滴云給你創(chuàng)建的賬戶叫"dc2-user",你需要自己設置root的密碼.

image

然后安裝docker:

sudo apt-get install docker.io

演示一個最小的sanic-app,來部署一下.

這是項目樹(目錄).

.
├── app.py
├── Dockerfile
└── templates
    └── index.html

1 directory, 3 files

app.py

import os

from sanic import Sanic
from sanic.response import html
from sanic.response import HTTPResponse
from jinja2 import Environment, FileSystemLoader

app = 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/gunicorn3

WORKDIR /code

ADD . /code

RUN pip install sanic \
    && pip install jinja2

EXPOSE 8080

CMD 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 這行,是鏡像運行他所以執(zhí)行的命令.

templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ltoddy's home</title>
    <link rel="stylesheet" >
</head>
<body>
<div class="container">
    <div class="page-header">
        <h1>Welcome</h1>
    </div>
</div>
</body>
</html>

然后把這些文件傳到服務器上:

scp -r * dc2-user@116.85.42.182:~

image

然后ssh連上我們的服務器,去構建我們的docker鏡像(這個過程有些漫長,具體看網速.)

docker build -t sanic-demo .

image

docker images

來查看一下當前擁有的鏡像

image

然后后臺運行docker鏡像:

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

image

這時候打開瀏覽器輸入: 116.85.42.182:5000 來看看效果吧.

最后說明一點,去滴滴云那里的防火墻規(guī)則那里,添加5000端口的規(guī)則.

https://img.vim-cn.com/00/b211cca5695de1c1c71ddf48faa4916cf441c6.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的。此外,除了...
    R_X閱讀 1,961評論 0 7
  • 轉載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,756評論 0 120
  • 最近研究了幾天docker的快速部署,感覺很有新意,非常輕量級和方便,打算在公司推廣一下,解放運維,省得每次部署一...
    Helen_Cat閱讀 1,572評論 0 4
  • 上一篇大概介紹了JWT的用法,實現(xiàn)了一個簡單的登錄注冊以及郵箱驗證。而這一篇呢就負責把我們的項目部署到自己的服務器...
    sidiWang閱讀 10,551評論 2 48
  • package com.tis.genshinhikaku; import java.sql.*; public ...
    毛毛特工閱讀 255評論 0 0

友情鏈接更多精彩內容