zoukankan      html  css  js  c++  java
  • 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
    即可开启远程连接
  • 相关阅读:
    _allow_resetlogs_corruption打开数据库
    增量备份恢复DATAGUARD(出现gap并后续有新增数据文件,主从数据文件路径一致)
    dataguard环境破坏后采用rman备份集重新部署
    表空间数据文件迁移到另外的位置(backup as copy tablespace)
    pl/sql无法登录12c问题
    ORA-00845: MEMORY_TARGET not supported on this system
    dataguard主库添加的数据文件路径在从库不存在
    12c expdp
    表进行加密(redact)实验
    创建触发器启动pdb
  • 原文地址:https://www.cnblogs.com/songzhixue/p/12604310.html
Copyright © 2011-2022 走看看