一、概述
應用案例:
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 即可開啟遠程連接