Files
Podcast-Generator/DOCKER_USAGE.md
hex2077 f64cd498cf feat: 添加日语支持并优化国际化功能
refactor: 重构中间件和路由处理逻辑
fix: 修复音频示例API的错误处理
docs: 更新README和DOCKER_USAGE文档
style: 优化语言切换器样式
chore: 更新.gitignore添加生产环境配置文件
2025-08-25 19:17:16 +08:00

126 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Docker 使用指南
本指南将介绍如何使用 `Dockerfile-Web``Dockerfile-Server` 来构建 Docker 镜像并运行整个应用程序,以及如何使用 Docker Compose 简化部署流程。
## 前提条件
* 已安装 Docker 和 Docker Compose。
## 方法一:分别构建和运行 Docker 镜像
`Simple-Podcast-Script` 项目的根目录下执行以下命令来构建 Docker 镜像。
### 构建 Docker 镜像
#### 构建 Web 应用镜像
```bash
docker build -t simple-podcast-web -f Dockerfile-Web .
```
* `-t simple-podcast-web`:为镜像指定一个名称和标签。
* `-f Dockerfile-Web`:指定 Web 应用的 Dockerfile 路径。
* `.`:指定构建上下文的路径,这里是项目的根目录。
#### 构建 Server 应用镜像
```bash
docker build -t simple-podcast-server -f Dockerfile-Server .
```
* `-t simple-podcast-server`:为镜像指定一个名称和标签。
* `-f Dockerfile-Server`:指定 Server 应用的 Dockerfile 路径。
* `.`:指定构建上下文的路径,这里是项目的根目录。
构建过程可能需要一些时间,具体取决于您的网络速度和系统性能。
### 运行 Docker 容器
#### 运行 Web 应用容器
```bash
docker run -d -p 3200:3000 -v /opt/audio:/app/server/output --restart always --name podcast-web simple-podcast-web
```
#### 命令说明:
* `-d`在分离模式detached mode下运行容器即在后台运行。
* `-p 3200:3000`:将宿主机的 3200 端口映射到容器的 3000 端口。Next.js 应用程序在容器内部的 3000 端口上运行。
* `-v /opt/audio:/app/server/output`:将宿主机的 `/opt/audio` 目录挂载到容器内的 `/app/server/output` 目录,用于音频文件的持久化存储。
* `-v /opt/sqlite.db:/app/web/sqlite.db`:将宿主机的 `/opt/sqlite.db` 文件挂载到容器内的 `/app/web/sqlite.db` 文件,用于数据库的持久化存储。
* `--restart always`:设置容器的重启策略,确保容器在意外停止或系统重启后能自动重启。
* `--name podcast-web`:为运行中的容器指定一个名称,方便后续管理。
* `simple-podcast-web`:指定要运行的 Docker 镜像名称。
#### 运行 Server 应用容器
```bash
docker run -d -p 3100:8000 -v /opt/audio:/app/server/output -v /opt/sqlite.db:/app/web/sqlite.db --restart always --name podcast-server simple-podcast-server
```
或者,如果您的应用程序需要配置环境变量(例如 `PODCAST_API_SECRET_KEY`),您可以使用 `-e` 参数进行设置:
```bash
docker run -d -p 3100:8000 -v /opt/audio:/app/server/output --restart always --name podcast-server -e PODCAST_API_SECRET_KEY="your-production-api-secret-key" simple-podcast-server
```
#### 命令说明:
* `-d`在分离模式detached mode下运行容器即在后台运行。
* `-p 3100:8000`:将宿主机的 3100 端口映射到容器的 8000 端口。Server 应用程序在容器内部的 8000 端口上运行。
* `-v /opt/audio:/app/server/output`:将宿主机的 `/opt/audio` 目录挂载到容器内的 `/app/server/output` 目录,用于音频文件的持久化存储。
* `--restart always`:设置容器的重启策略,确保容器在意外停止或系统重启后能自动重启。
* `--name podcast-server`:为运行中的容器指定一个名称,方便后续管理。
* `-e PODCAST_API_SECRET_KEY="your-production-api-secret-key"`:设置环境变量,将 `"your-production-api-secret-key"` 替换为您的实际密钥。
* `simple-podcast-server`:指定要运行的 Docker 镜像名称。
## 方法二:使用 Docker Compose推荐
项目提供了 `docker-compose.yml` 文件,可以更方便地管理和部署整个应用。
### 启动服务
在项目根目录下执行以下命令启动所有服务:
```bash
docker-compose up -d
```
* `-d`:在分离模式下运行容器,即在后台运行。
### 停止服务
```bash
docker-compose down
```
### 查看服务状态
```bash
docker-compose ps
```
### 查看服务日志
```bash
# 查看所有服务日志
docker-compose logs
# 查看特定服务日志
docker-compose logs web
docker-compose logs server
```
## 验证应用程序是否运行
容器启动后,您可以通过以下地址来验证应用程序是否正常运行:
* Web 应用: `http://localhost:3200`
* Server 应用: `http://localhost:3100`
## 注意事项
1. 请确保宿主机上的端口 3100 和 3200 未被其他应用程序占用。
2. 请确保宿主机上的 `/opt/audio` 目录存在且具有适当的读写权限,或者根据实际情况修改挂载路径。
3. 在生产环境中,请使用安全的密钥替换示例中的 `PODCAST_API_SECRET_KEY`
4. 使用 Docker Compose 时服务间通过服务名称进行通信Web 应用通过 `http://server:8000` 访问 Server 应用。