Streama项目Docker-Compose部署指南
2025-07-06 06:50:41作者:羿妍玫Ivan
概述
Streama是一个自托管媒体服务器应用,允许用户搭建个人流媒体平台。本文将详细介绍如何使用Docker-Compose部署Streama项目,包括MySQL数据库、Streama应用服务和Nginx反向代理的完整配置方案。
系统架构
该Docker-Compose配置构建了一个三服务架构:
- MySQL服务:作为Streama的后端数据库
- Streama应用服务:核心媒体服务器应用
- Nginx反向代理:提供HTTP访问入口和负载均衡
服务配置详解
MySQL服务配置
mysql:
platform: linux/x86_64
image: mysql:5.7
restart: always
container_name: mysql
hostname: mysql
networks:
- net-backend
expose:
- 3306
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: streama_root_password
MYSQL_USER: streama
MYSQL_DATABASE: streama
MYSQL_PASSWORD: streama_password
关键配置说明:
- 使用MySQL 5.7版本,确保兼容性
- 配置了持久化存储卷
db_data
,防止数据丢失 - 设置了root用户密码和专用streama用户
- 仅暴露3306端口给内部网络
Streama应用服务配置
streama:
image: streama
build: .
restart: always
container_name: streama
hostname: streama
depends_on:
- mysql
networks:
- net-backend
expose:
- 8080
volumes:
- $HOME/movies:/data/streama
- app_data:/app/streama
environment:
ACTIVE_PROFILE: mysql
MYSQL_HOST: mysql
MYSQL_PORT: 3306
MYSQL_DB: streama
MYSQL_USER: streama
MYSQL_PASSWORD: streama_password
关键配置说明:
- 从本地Dockerfile构建Streama镜像
- 挂载主机电影目录到容器
/data/streama
路径 - 配置了应用数据持久化卷
app_data
- 通过环境变量配置MySQL连接参数
- 暴露8080端口供内部访问
Nginx反向代理配置
proxy-reverse:
image: proxy-reverse
build: nginx/.
restart: always
container_name: proxy-reverse
hostname: proxy-reverse
depends_on:
- streama
networks:
- net-backend
ports:
- "80:80"
volumes:
- proxy_reverse_data:/etc/nginx
- proxy_reverse_data_log:/var/log/nginx
关键配置说明:
- 从nginx目录下的Dockerfile构建镜像
- 映射主机80端口到容器80端口
- 配置了Nginx配置和日志的持久化存储
- 依赖Streama服务,确保启动顺序
网络与存储配置
networks:
net-backend:
volumes:
db_data:
app_data:
proxy_reverse_data:
proxy_reverse_data_log:
配置说明:
- 创建专用网络
net-backend
隔离服务间通信 - 定义四个持久化卷,分别用于:
- MySQL数据存储
- Streama应用数据
- Nginx配置
- Nginx日志
部署建议
- 修改挂载路径:将
$HOME/movies
替换为实际的媒体文件存储路径 - 安全增强:
- 修改默认密码配置
- 考虑添加SSL证书配置
- 性能优化:
- 根据主机资源限制容器内存和CPU使用
- 考虑添加缓存配置
常见问题解决
- 服务启动顺序问题:确保MySQL完全启动后再启动Streama
- 权限问题:检查挂载目录的读写权限
- 端口冲突:确认主机80端口未被占用
总结
该Docker-Compose配置提供了一个完整的Streama媒体服务器部署方案,包含了数据库、应用服务和反向代理的完整配置。通过容器化部署,简化了环境配置和依赖管理,同时通过持久化存储确保了数据安全。用户可根据实际需求调整配置参数,如挂载路径、端口映射等,以适应不同的部署环境。