KatelyaTV/DOCKER_DEPLOYMENT.md

251 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# KatelyaTV Docker 部署指南
> 本文档提供 KatelyaTV 的完整 Docker 部署指南,确保用户能够成功拉取和部署镜像。
## 📦 镜像信息
- **镜像地址**: `ghcr.io/katelya77/katelyatv:latest`
- **支持架构**: linux/amd64, linux/arm64
- **基础镜像**: node:20-alpine
- **暴露端口**: 3000
## 🚀 快速部署
### 1. 单容器部署(推荐新手)
```bash
# 拉取最新镜像
docker pull ghcr.io/katelya77/katelyatv:latest
# 启动容器
docker run -d \
--name katelyatv \
-p 3000:3000 \
--env PASSWORD=your_secure_password \
--restart unless-stopped \
ghcr.io/katelya77/katelyatv:latest
# 查看运行状态
docker ps | grep katelyatv
# 查看日志
docker logs katelyatv
```
### 2. Docker Compose 部署(推荐生产环境)
创建 `docker-compose.yml` 文件:
```yaml
version: '3.8'
services:
katelyatv:
image: ghcr.io/katelya77/katelyatv:latest
container_name: katelyatv
restart: unless-stopped
ports:
- "3000:3000"
environment:
- PASSWORD=your_secure_password
- SITE_NAME=KatelyaTV
volumes:
# 可选:挂载自定义配置
# - ./config.json:/app/config.json:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 10s
retries: 3
```
启动服务:
```bash
# 启动服务
docker-compose up -d
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f
```
## 🗄️ 数据持久化部署Redis
对于需要多用户支持和数据同步的场景:
```yaml
version: '3.8'
services:
katelyatv:
image: ghcr.io/katelya77/katelyatv:latest
container_name: katelyatv
restart: unless-stopped
ports:
- "3000:3000"
environment:
- USERNAME=admin
- PASSWORD=admin_password
- NEXT_PUBLIC_STORAGE_TYPE=redis
- REDIS_URL=redis://redis:6379
- NEXT_PUBLIC_ENABLE_REGISTER=true
depends_on:
- redis
networks:
- katelyatv-network
redis:
image: redis:7-alpine
container_name: katelyatv-redis
restart: unless-stopped
volumes:
- redis_data:/data
networks:
- katelyatv-network
command: redis-server --appendonly yes
volumes:
redis_data:
networks:
katelyatv-network:
driver: bridge
```
## 🔧 环境变量配置
| 变量名 | 描述 | 默认值 | 示例 |
|--------|------|--------|------|
| `PASSWORD` | 访问密码 | - | `my_secure_password` |
| `USERNAME` | 管理员用户名Redis模式 | - | `admin` |
| `SITE_NAME` | 站点名称 | `KatelyaTV` | `我的影视站` |
| `NEXT_PUBLIC_STORAGE_TYPE` | 存储类型 | `localstorage` | `redis`, `d1`, `upstash` |
| `REDIS_URL` | Redis连接地址 | - | `redis://redis:6379` |
| `NEXT_PUBLIC_ENABLE_REGISTER` | 开放注册 | `false` | `true` |
| `NEXT_PUBLIC_SEARCH_MAX_PAGE` | 搜索最大页数 | `5` | `10` |
## 🔍 故障排查
### 常见问题
1. **容器启动失败**
```bash
# 查看详细错误信息
docker logs katelyatv
# 检查端口占用
netstat -tulpn | grep :3000
```
2. **镜像拉取失败**
```bash
# 确认镜像地址正确
docker pull ghcr.io/katelya77/katelyatv:latest
# 如果是私有仓库,需要先登录
docker login ghcr.io
```
3. **数据丢失问题**
- localStorage 模式:数据存储在浏览器,清除缓存会丢失
- 建议使用 Redis 模式进行数据持久化
### 健康检查
```bash
# 检查容器状态
docker ps
# 检查容器健康状态
docker inspect katelyatv | grep -A 5 "Health"
# 测试应用响应
curl -I http://localhost:3000
```
## 🔄 更新升级
### 更新到最新版本
```bash
# 停止旧容器
docker stop katelyatv
docker rm katelyatv
# 拉取最新镜像
docker pull ghcr.io/katelya77/katelyatv:latest
# 启动新容器(使用相同配置)
docker run -d \
--name katelyatv \
-p 3000:3000 \
--env PASSWORD=your_secure_password \
--restart unless-stopped \
ghcr.io/katelya77/katelyatv:latest
```
### Docker Compose 更新
```bash
# 拉取最新镜像
docker-compose pull
# 重新创建容器
docker-compose up -d --force-recreate
```
## 🔐 安全建议
1. **设置强密码**: 使用复杂密码保护访问
2. **限制访问**: 配置防火墙或反向代理限制访问来源
3. **定期更新**: 保持镜像版本最新
4. **数据备份**: 定期备份 Redis 数据(如果使用)
5. **监控日志**: 关注异常访问和错误日志
## 📊 性能优化
### 资源限制
```yaml
services:
katelyatv:
image: ghcr.io/katelya77/katelyatv:latest
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
reservations:
memory: 256M
cpus: '0.25'
```
### 反向代理Nginx
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
## 🆘 获取帮助
- 📖 [项目文档](README.md)
- 🐛 [问题反馈](https://github.com/katelya77/KatelyaTV/issues)
- 💬 [讨论区](https://github.com/katelya77/KatelyaTV/discussions)
---
**注意**: 本项目仅供学习和个人使用,请遵守当地法律法规。