无能力者只知抱怨 2020-02-19
#本例子的环境为 docker:Docker version 18.09.7 docker-composer:docker-compose version 1.23.1

curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
#先下载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
version: "3.6"
services:
flask-web:
build: .
ports:
- "5000:5000"
container_name: flask-web
redis:
image: redis
container_name: redis3
# PS:注意缩进,每层的空格数要保持一直,特别注意冒号在参数设置时留出一个空格
#ps:这个是在服务上设置的,如在本地的虚拟上,可能会出问题#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"]
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)#环境依赖包 redis flask
sudo docker-compose up#ps:在case1-flask-web的文件下输入