• docker-compose的flask自动部署


    #本例子的环境为 docker:Docker version 18.09.7       docker-composer:docker-compose version 1.23.1

    1.目录结构:

     2.docker的安装

    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    

    3.docker-compose的安装

    #先下载docker-compose二进制wnejian
    sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    #再赋予该文件可执行权限
    sudo chmod +x /usr/local/bin/docker-compose
    
    #最后检查docker-compose是否安装成功
    docker-compose --version
    

    4.docker-compose.yaml的内容

    version: "3.6"
    services: flask-web: build: . ports: - "5000:5000" container_name: flask-web redis: image: redis container_name: redis3 # PS:注意缩进,每层的空格数要保持一直,特别注意冒号在参数设置时留出一个空格 #ps:这个是在服务上设置的,如在本地的虚拟上,可能会出问题

     5.Dockerfile文件的内容

    #flask web app v1.0
    # 搭建一个基于flask的web项目,实现了简单的访问统计
    # 第一步: 获取一个镜像: python3.6
    FROM python:alpine3.6
    # 第二部: 拷贝项目代码到镜像中 ADD(自动尝试解压缩,不建议)/COPY
    COPY ./flask-web-code /code
    # 第三部: 安装项目的依赖环境: 第三方模块 flaks reids
    # 切换工作目录用WORKDIR,类似于cd命令
    WORKDIR /code
    RUN pip install -r requirements.txt
    # 第四部: 配置项目的启动 CMD参数 python app.py
    CMD ["python", "app.py"]
    

      6.app.py文件的内容

    import time
    
    import redis
    from flask import Flask
    
    app = Flask(__name__)
    # 此处host是docker-compose.yaml配置文件中 redis的服务的名称
    cache = redis.Redis(host='redis', port=6379)
    def get_hit_count():
         """利用redis统计访问次数"""
         retries = 5
         # 由于当redis重启时,可能会有短暂的无法访问redis
         # 循环的在作用默认重试5次
         while True:
             try:
                  # redis的incr方法, 如果hits值存在自动+1, 否则新增该键,值为1
                 return cache.incr('hits')
             except redis.exceptions.ConnectionError as e:
                 if retries == 0:
                     raise e
                 retries -= 1
                 time.sleep(0.5)
    
    
    @app.route('/')
    def main():
         count = get_hit_count()
         return "欢迎访问! 网站已累计访问{}次
    ".format(count)
    if __name__ == '__main__':
         app.run(host='0.0.0.0', debug=True)
    

      7. requirements.txt文件的内容

     
    #环境依赖包
    redis
    flask
    

      8.启动

    sudo docker-compose up
    #ps:在case1-flask-web的文件下输入

      

     

      

  • 相关阅读:
    SQLServer 高可用、高性能和高保护延伸
    SQLServer 通过DMV实现低影响的自动监控和历史场景追溯
    查找表包含的页和页所在的表
    出身在二三线城市软件工作者的悲哀
    SQL语句实现取消自增列属性
    基于Apache(without ssl)的svn环境搭建
    sqlite3 命令行操作
    HTML常用特殊符号集
    IOS项目目录结构和开发流程
    Mac OSX 快捷键&命令行
  • 原文地址:https://www.cnblogs.com/117698ai/p/12331163.html
Copyright © 2020-2023  润新知