docker-compose简单部署flask_web_demo

本文介绍如何使用Docker-compose在Ubuntu18.04上部署基于Flask的Web应用,包括项目目录结构、Dockerfile配置、docker-compose.yaml文件设置及应用运行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于Ubuntu18.04、Docker19.03.2

项目目录结构

└── case1-flask-web
    ├── docker-compose.yaml
    ├── Dockerfile
    └── flask-web-code
        ├── app.py
        └── requirements.txt

docker-compose安装

查看官方安装docker-compose文档说明.

app.py文件

  1 import time
  2 
  3 import redis
  4 from flask import Flask
  5 
  6 
  7 app = Flask(__name__)
  8 # 此处host是docker-compose.yaml配置文件中 redis的服务的名称
  9 cache = redis.Redis(host='redis', port=6379)
 10 
 11 
 12 def get_hit_count():
 13     """利用redis统计访问次数"""
 14     retries = 5
 15     # 由于当redis重启时,可能会有短暂的无法访问redis
 16     # 循环的在作用默认重试5次
 17     while True:
 18         try:
 19             # redis的incr方法, 如果hits值存在自动+1, 否则新增该键,值为1
 20             return cache.incr('hits')
 21         except redis.exceptions.ConnectionError as e:
 22             if retries == 0:
 23                 raise e
 24             retries -= 1
 25             time.sleep(0.5)
 26 
 27 
 28 @app.route('/')
 29 def main():
 30     count = get_hit_count()
 31     return "欢迎访问! 网站已累计访问{}次\n".format(count)
 32 
 33 
 34 if __name__ == '__main__':
 35     app.run(host='0.0.0.0', debug=True)

requirements.txt

# 环境依赖包
redis
flask

Dockerfile文件

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

docker-compose.yaml文件

1 version: "3.6"
  2 services:
  3   flask-web:
  build的.代表当前路径下的Dockerfile文件
  4     build: .
  5     ports:
  6       - "5000:5000"
  7     container_name: flask-web
  8     networks:
  9       - web
 10   redis:
 # 建议提前pull下来redis的docker镜像文件,此处采用的时官方redis镜像
 11     image: redis
 12     container_name: redis3
 13     networks:
 14       - web
 15     volumes:
 16       - redis-data:/data
 17 networks:
 18   web:
 19     driver: bridge
 #  配置手动挂载数据卷,实现docker-compose down 后,保持数据持久性
 20 volumes:
 21   redis-data:
 22     driver: local
 23#  PS:注意缩进,每层的空格数要保持一直,特别注意冒号在参数设置时留出一个空格

启动终端命令:sudo docker-compose up
终端或浏览器测试:curl 127.0.0.1:5000 进行测试访问
结果如下:

my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ docker-compose up -d
Creating network "case1-flask-web_web" with driver "bridge"
Creating volume "case1-flask-web_redis-data" with local driver
Creating redis3    ... done
Creating flask-web ... done
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ curl 127.0.0.1:5000
欢迎访问! 网站已累计访问1次
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ curl 127.0.0.1:5000
欢迎访问! 网站已累计访问2次
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ curl 127.0.0.1:5000
欢迎访问! 网站已累计访问3次
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ docker-compose down
Stopping flask-web ... done
Stopping redis3    ... done
Removing flask-web ... done
Removing redis3    ... done
Removing network case1-flask-web_web
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ docker-compose up -d
Creating network "case1-flask-web_web" with driver "bridge"
Creating flask-web ... done
Creating redis3    ... done
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ curl 127.0.0.1:5000
欢迎访问! 网站已累计访问4次
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ curl 127.0.0.1:5000
欢迎访问! 网站已累计访问5次
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ curl 127.0.0.1:5000
欢迎访问! 网站已累计访问6次
my-pc@ubuntu18-04:~/PycharmProjects/workspace/case1-flask-web$ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值