Flasky项目Docker Compose部署指南
2025-07-07 00:57:42作者:何举烈Damon
理解Docker Compose在Flasky项目中的作用
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,它允许开发者通过一个YAML文件来配置应用的服务。在Flasky项目中,Docker Compose被用来同时管理Flask应用容器和MySQL数据库容器,实现开发和生产环境的一致性。
配置文件详解
版本声明
version: '3'
这指定了我们使用的是Docker Compose文件格式的第3版,这是目前广泛使用的稳定版本,支持大多数现代Docker功能。
服务定义
Flasky应用服务
flasky:
build: .
ports:
- "8000:5000"
env_file: .env
restart: always
links:
- mysql:dbserver
build: .
:指示Docker使用当前目录下的Dockerfile构建镜像ports: "8000:5000"
:将容器内部的5000端口映射到主机的8000端口env_file: .env
:从.env文件加载环境变量restart: always
:确保容器在退出时自动重启links
:创建到mysql服务的连接,并设置别名dbserver
MySQL数据库服务
mysql:
image: "mysql/mysql-server:5.7"
env_file: .env-mysql
restart: always
image: "mysql/mysql-server:5.7"
:使用官方MySQL 5.7服务器镜像env_file: .env-mysql
:从专门的环境变量文件加载MySQL配置restart: always
:确保数据库服务自动重启
环境变量配置建议
对于Flasky项目,建议在.env文件中至少包含以下配置:
FLASK_APP=flasky.py
FLASK_CONFIG=docker
SECRET_KEY=your-secret-key
在.env-mysql文件中应包含MySQL相关配置:
MYSQL_ROOT_PASSWORD=your-root-password
MYSQL_DATABASE=flasky
MYSQL_USER=flasky
MYSQL_PASSWORD=flasky-password
部署流程
- 确保系统已安装Docker和Docker Compose
- 创建.env和.env-mysql文件并配置适当的环境变量
- 在项目根目录运行:
docker-compose up -d
- 应用将在http://localhost:8000 可用
常见问题解决
数据库连接问题
如果应用无法连接MySQL,检查:
- 确保.env-mysql中的配置正确
- 确认MySQL容器已完全启动(可能需要等待几秒钟)
- 检查应用日志:
docker-compose logs flasky
端口冲突
如果8000端口已被占用,可以修改docker-compose.yml中的端口映射,例如改为"8080:5000"
开发与生产环境差异
对于生产环境,建议:
- 使用更安全的密码
- 考虑添加数据卷持久化MySQL数据
- 可能需要对Flask应用添加更多安全相关的环境变量配置
扩展建议
可以根据项目需求扩展docker-compose.yml,例如:
- 添加Redis服务用于缓存
- 添加Nginx作为反向代理
- 添加Celery服务处理后台任务
通过这个Docker Compose配置,Flasky项目可以轻松地在任何支持Docker的环境中部署,确保了开发、测试和生产环境的一致性。