练手项目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镜像的构建和管理