源代碼: 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
這是項目樹(目錄).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端口的規則.