美文网首页
Docker_5_1_搭建flask+react+mariadb

Docker_5_1_搭建flask+react+mariadb

作者: zestloveheart | 来源:发表于2019-05-02 15:31 被阅读0次

    Motivation

    最近打算开发一套web系统,整合和更新自己之前所学的一些工程技术。
    系统打算采用前后端分离架构,并以微服务为主,采用RESTful API的设计思想。
    后台微服务主要基于Flask(Python的web框架)的fastAPI开发。如果后面有其他需要,会考虑加上Java的Spring Boot。
    使用python的主要目的是要展示做爬虫、数据分析、机器学习的工作。
    前端:React
    数据库:mariadb(mysql)
    先分成几个部分探索搭建,然后使用docker-compose组合,打造一套Full Docker Integration (Docker based) 环境。保证项目的快速搭建和部署,同时也深入学习Docker的相关使用方法。
    本套工作主要包含以下部分:

    • flask
    • react
    • mariadb
    • 使用docker-compose组合
    • 其他

    在本篇主要介绍采用flask的后台环境搭建
    在下一篇再提react及其他后续搭建工作

    flask基础搭建

    参考:
    https://zhuanlan.zhihu.com/p/55673749
    https://github.com/tiangolo/uwsgi-nginx-flask-docker

    基础搭建

    • 拉镜像
    # 搜索镜像
    docker search flask
    # 拉取镜像并查看是否成功
    docker pull tiangolo/uwsgi-nginx-flask:python3.7-alpine3.8
    docker images
    
    • 编写代码

    创建如下文件结构:

    flask
      └── app
          └── main.py
    

    main.py文件代码如下:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return "Hello World from Flask!"
    
    if __name__ == "__main__":
        # 测试环境下才开启debug模式
        app.run(host='0.0.0.0', debug=True, port=80)
    
    • 运行容器
    docker run -it --name flask_test -p 8080:80 -v /docker/flask/app:/app -w /app tiangolo/uwsgi-nginx-flask:python3.7-alpine3.8 python main.py
    
    • 进入浏览器输入localhost:8080测试

    自定义镜像

    • 在flask下创建Dockerfile,内容如下:
    # 基础镜像
    FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.8
    
    # 没有vim来查看文件很不习惯,利用alpine的包管理安装一个来
    RUN apk add vim
    
    # 顺便用pip安装个redis包,后面用得上
    RUN pip3 install redis
    
    # 将我们的app文件加入到自定义镜像里面去
    COPY ./app /app
    
    • 构建容器
      在Dockerfile同级目录执行docker build -t myflask .

    实现能记录访问次数的service

    • 在flask下创建docker-compose.yml,内容如下:
    version: '3'
    services:
      flask:
          image: myflask
          container_name: myflask
          ports:
            - 8080:80
          volumes:
            - /docker/flask/app:/app
          working_dir: /app
          # 运行后执行的命令
          command: python main.py
    
      redis:
        # 如果没有这个镜像的话会自动下载
        image: "redis:latest"
        container_name: myredis
    
    • 修改main.py,内容如下:
    from flask import Flask
    from redis import Redis
    
    app = Flask(__name__)
    redis = Redis(host='redis', port=6379)
    
    
    @app.route("/")
    def hello():
        count = redis.incr('visit')
        return f"Hello World from Flask! 该页面已被访问{count}次。"
    
    
    if __name__ == "__main__":
        # Only for debugging while developing
        app.run(host='0.0.0.0', debug=True, port=80)
    
    • 启动容器:docker-compose up

    其他教程

    相关文章

      网友评论

          本文标题:Docker_5_1_搭建flask+react+mariadb

          本文链接:https://www.haomeiwen.com/subject/fvhwnqtx.html