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 即可开启远程连接