基於docker+gunicorn部署sanic項目

基於docker+gunicorn部署sanic項目

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

最近雲服務提供商在打價格戰,我在滴滴雲上花了不多的錢租了一個月的雲服務器:
公網ip是: 116.85.42.182, 如下我以116.85.42.182這個ip爲演示,當你本身在部署的時候請換乘本身的ip地址.html

買完服務器以後,你會獲得一個公網ip,你能夠經過ssh命令鏈接上你的服務器.python

ssh dc2-user@116.85.42.182

順便提一句,滴滴雲給你建立的帳戶叫"dc2-user",你須要本身設置root的密碼.git

而後安裝docker:github

sudo apt-get install docker.io

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

這是項目樹(目錄).docker

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

1 directory, 3 files

app.pybootstrap

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木板引擎,因此帶會須要安裝這兩個依賴.vim

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 這行,是鏡像運行他因此執行的命令.

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

相關文章
相關標籤/搜索