docker部署flask項目


一、概述

應用案例:

18w+淘寶cid mapping  部署線上對外提供接口

使用兩個容器:數據庫(mongodb),框架(flask)

二、操作流程

1、拉取Mongo鏡像並啟動一個容器命名為mongo,端口映射 容器的27017端口映射到宿主機的27018端口(訪問宿主機的27018端口就可以訪問到容器的27017端口的服務)

docker pull mongo
docker run -id -p 27018:27017 --name=mongo mongo bash    啟動容器

2、拉去centos鏡像,安裝依賴環境

通過參數 --link 來使兩個容器通信

docker pull centos:7
docker run -it --name=taobaoweb -p 5010:5010 --link mongo:mongo centos:7                            啟動並進入容器
yum install -y vim && yum install -y lrzsz && yum install -y unzip && yum install python3

pip3 install -i https://pypi.doubanio.com/simple pymongo
pip3 install -i https://pypi.doubanio.com/simple flask
pip3 install -i https://pypi.doubanio.com/simple gunicorn

3、本地代碼上傳到docker容器內,並解壓

unzip taobao.zip

4、進入淘寶目錄配置settings文件

settings.py

from pymongo import MongoClient

my_client = MongoClient(host="mongo",port=27017)
mdb = my_client["dianshang"]

host名為 

 項目文件baotaoserver.py

#-*-coding:utf-8-*-
from settings import mdb
from flask import Flask,jsonify
app = Flask(__name__)

@app.route("/search/<int:num>", methods=["GET", "POST"],)
def search_cid_mapping(num):
    try:
        data = list(mdb.taobaomapping.find({"cid":num}))[0]
        data.pop("_id")
        return jsonify(data)
    except Exception as e:
        return jsonify({})


@app.route("/search/limit/<int:num>", methods=["GET", "POST"],)
def search_cid_limit(num):
    try:
        data = list(mdb.taobaomapping.find({}).limit(num))
        [i.pop("_id") for i in data]
        return jsonify(data)
    except Exception as e:
        return jsonify({})

if __name__ == '__main__':
    print(mdb.taobaomapping.find({"cid":40}))
    app.config["JSON_AS_ASCII"] = False
    app.run("0.0.0.0",5010)

使用gunicorn啟動flask項目

gunicorn -w 4 -D -b 0.0.0.0:5010 taobaoserver:app         啟動flask服務      taobaoserver為項目文件名

mongo容器設置

遠程連接的開啟
在 mongodb 的容器當中

#更新源
apt-get update
# 安裝 vim
apt-get install vim
# 修改 mongo 配置文件
vim /etc/mongod.conf.orig

將其中的


bindIp: 127.0.0.1
注釋掉# bindIp: 127.0.0.1
或者改成bindIp: 0.0.0.0
即可開啟遠程連接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM