当前位置: 首页 > article >正文

练手项目1:Dockerized Redis访问计数器

以下是一个结合Python、Redis和Docker的简单项目设计方案,实现一个带有访问次数统计的Web应用:

技术栈

  • Python 3.x

  • Flask Web框架

  • Redis数据库

  • Docker

项目结构

redis-counter/
├── app/
│   ├── app.py
│   └── requirements.txt
├── docker-compose.yml
└── Dockerfile

1. 创建Flask应用 (app/app.py)

from flask import Flask
import redis

app = Flask(__name__)
redis_client = redis.Redis(host='redis', port=6379, db=0)

@app.route('/')
def counter():
    count = redis_client.incr('hits')
    return f'本页面已被访问 {count} 次'

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

 2. 创建依赖文件 (app/requirements.txt)

flask==3.0.2
redis==5.0.1

3. 创建Dockerfile

# 使用官方Python基础镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY app/requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY app/ .

# 暴露端口
EXPOSE 5000

# 启动命令
CMD ["python", "app.py"]

4. 创建docker-compose.yml

version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - redis
    networks:
      - app-network

  redis:
    image: "redis:alpine"
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    networks:
      - app-network

volumes:
  redis-data:

networks:
  app-network:

操作步骤

1.构建并启动服务

docker-compose up --build

2.访问应用

        打开浏览器访问 http://localhost:5000 ,每次刷新页面都会看到访问次数增加

3.停止服务

docker-compose down

生成独立镜像 

# 构建Web应用镜像
docker build -t redis-counter-web .

# 查看生成的镜像
docker images | grep redis-counter-web

项目特点

  1. 使用Redis持久化存储访问计数

  2. 通过Docker Compose管理多容器应用

  3. 使用独立的Docker网络进行容器间通信

  4. Redis数据持久化存储(通过volume)

  5. 完整的容器化部署方案

这个项目展示了以下关键技术点:

  • Python Web应用与Redis的集成

  • Docker多容器应用的编排

  • 容器间的网络通信

  • 数据持久化存储

  • Docker镜像的构建和管理


http://www.kler.cn/a/610881.html

相关文章:

  • HarmonyOS人脸比对技术自学指南与实战分享
  • GPU服务器集群网络规划方案
  • Redis原理:Monitor 实现
  • 【PGCCC】PostgreSQL Certified Master 个人专访 | 第二期 何雄
  • 【面试八股】:常见的锁策略
  • Linux驱动开发进阶(二) - sysfs文件系统
  • 测试用例的场景化分析方法
  • Ubuntu 14.10 Desktop (i386):经典 32 位操作系统的回顾与指南(附安装包)
  • 2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序
  • 智慧产科管理系统源码,孕产保健信息系统,Java语言Vue和ElementUI框架开发
  • spring boot + thymeleaf整合完整例子
  • 婚姻的解构与重构 | 一场关于选择与责任的探索
  • 二叉树相关算法实现:判断子树与单值二叉树
  • ISIS-3 LSDB链路状态数据库同步
  • mysql-connector-java-5.1.37.jarJava连接器
  • C++智能指针万字详细讲解(包含智能指针的模拟实现)
  • 算法设计——最坏时间复杂度分析
  • 美摄科技开启智能汽车车内互动及娱乐解决方案2.0
  • Ajax与Axios,以及Apifox的入门使用
  • 《Python实战进阶》No35:循环神经网络(RNN)时间序列预测