docker-compose的flask自动部署

无能力者只知抱怨 2020-02-19

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

1.目录结构:

docker-compose的flask自动部署

 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 "欢迎访问! 网站已累计访问{}次\n".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的文件下输入

 

  

相关推荐