网站首页 > 基础教程 正文
以下是一份详细的 Flask Docker Demo 项目指南,帮助你快速搭建一个容器化的 Flask 应用。
1. 项目目标
创建一个简单的 Flask 应用,并使用 Docker 将其容器化,实现以下功能:
- 运行一个返回 "Hello, Dockerized Flask!" 的 API
- 通过 Docker Compose 管理容器化服务
- 可选的扩展:添加 Redis 作为缓存服务
2. 环境准备
- 安装 Docker
- 安装 Docker Compose(通常包含在 Docker Desktop 中)
- Python 3.x(本地开发可选)
3. 项目结构
bash
flask-docker-demo/
├── app/
│ ├── __init__.py
│ └── routes.py
├── requirements.txt
├── Dockerfile
└── docker-compose.yml
4. 分步实现
步骤 1: 创建 Flask 应用
- 新建项目目录并进入:
bash
mkdir flask-docker-demo && cd flask-docker-demo
- 创建 app 目录和代码文件:
python
# app/__init__.py
from flask import Flask
app = Flask(__name__)
from app import routes
python
# app/routes.py
from app import app
@app.route('/')
def hello():
return "Hello, Dockerized Flask!"
- 生成依赖文件 requirements.txt:
txt
Flask==3.0.0
步骤 2: 编写 Dockerfile
dockerfile
# 使用官方 Python 基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 5000
# 启动命令
CMD ["flask", "run", "--host=0.0.0.0"]
步骤 3: 构建并运行 Docker 镜像
bash
# 构建镜像
docker build -t flask-docker-demo .
# 运行容器(映射端口 5000)
docker run -p 5000:5000 flask-docker-demo
访问 http://localhost:5000 查看结果。
5. 使用 Docker Compose
- 创建 docker-compose.yml:
yaml
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
environment:
- FLASK_DEBUG=1
- 启动服务:
bash
docker-compose up --build
6. 扩展:添加 Redis 缓存
- 修改 docker-compose.yml:
yaml
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
environment:
- FLASK_DEBUG=1
depends_on:
- redis
redis:
image: "redis:alpine"
ports:
- "6379:6379"
- 更新 Flask 代码使用 Redis:
python
# routes.py
from flask import Flask
import redis
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
@app.route('/visits')
def visits():
count = cache.incr('visits')
return f"Total visits: {count}"
- 更新 requirements.txt:
txt
Flask==3.0.0
redis==4.5.5
7. 常用命令
bash
# 停止并删除容器
docker-compose down
# 查看运行中的容器
docker ps
# 查看容器日志
docker-compose logs web
# 进入容器 Shell
docker exec -it <container_id> /bin/bash
8. 常见问题
- 端口冲突:确保主机端口(如 5000)未被其他程序占用
- 依赖安装失败:检查 requirements.txt 格式是否正确
- 容器间通信问题:使用 Docker Compose 的服务名(如 redis)作为主机名
- 缓存问题:构建时添加 --no-cache 参数重建镜像:
bash
docker-compose build --no-cache
9. 项目仓库示例
完整代码参考:GitHub Flask-Docker-Demo(虚构链接)
通过本指南,您已掌握如何将 Flask 应用 Docker 化,并实现多容器协作。下一步可探索:
- Docker 网络配置
- 数据卷持久化存储
- CI/CD 管道集成
- Kubernetes 部署
猜你喜欢
- 2025-05-15 Filebeat es 同步服务器日志到es
- 2025-05-15 docker容器的使用以及部署mysql
- 2025-05-15 一、docker部署ollama同时分别运行gemma3:27b bge-m3 deepseek-r1
- 2025-05-15 聊聊部署在docker容器里面的springboot项目如何启用arthas
- 2025-05-15 Docker容器化部署Java应用的最佳实践
- 2025-05-15 「linux」如何使用docker部署c/c++程序
- 2025-05-15 Docker安装MySQL 8、Redis并确保数据持久化的详细步骤
- 2025-05-15 彻底搞懂容器启动、停止、调试的每一个细节!
- 2025-05-15 Mac安装Docker及使用
- 2025-05-15 开发利器丨如何使用ELK设计微服务中的日志收集方案?
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)