SAAS/README-DOCKER.md
2025-05-14 00:30:11 +08:00

93 lines
2.3 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 部署说明
## 项目 Docker 化说明
本项目使用 Docker 和 Docker Compose 进行容器化部署,包含两个主要服务:
- Next.js 应用服务(基于 Node.js 22
- MySQL 数据库服务
## 前提条件
- 安装 [Docker](https://www.docker.com/get-started)
- 安装 [Docker Compose](https://docs.docker.com/compose/install/)
## 部署步骤
### 1. 构建并启动服务
```bash
# 构建并在后台启动所有服务
docker-compose up -d
# 只构建不启动
docker-compose build
# 查看服务日志
docker-compose logs -f
```
### 2. 访问应用
应用将在以下地址可用:
- 前端应用: http://localhost:3000
### 3. 数据库访问
MySQL 数据库信息:
- 主机: localhost:3306
- 用户名: root
- 密码: aiwoQwo520..
- 数据库名: saas_db
可以使用以下命令连接数据库:
```bash
docker exec -it my-mysql mysql -uroot -p"aiwoQwo520.."
```
### 4. 停止服务
```bash
# 停止所有服务但不删除容器
docker-compose stop
# 停止并删除容器和网络
docker-compose down
# 停止并删除容器、网络和数据卷(谨慎使用,会删除数据库数据)
docker-compose down -v
```
## 文件说明
- `Dockerfile`: 用于构建 Next.js 应用的镜像(使用 Node.js 22 和 npm
- `docker-compose.yml`: 定义和配置服务
- `.dockerignore`: 指定不包含在 Docker 构建上下文中的文件
## 构建流程说明
Dockerfile 使用多阶段构建以优化最终镜像大小:
1. 基础阶段:使用 Node.js 22 Alpine 镜像作为基础
2. 依赖阶段:安装项目依赖
- 使用 `npm install` 安装依赖
3. 构建阶段:构建 Next.js 应用
- 使用 `npm run build` 构建应用
4. 运行阶段:配置生产环境并运行应用
- 使用 standalone 输出模式优化部署
## 环境变量
可在 `docker-compose.yml` 文件中修改环境变量:
- `DB_HOST`: 数据库主机名
- `DB_USER`: 数据库用户名
- `DB_PASSWORD`: 数据库密码
- `DB_NAME`: 数据库名称
- `DB_PORT`: 数据库端口
## 注意事项
1. 数据库数据存储在 Docker 卷 `mysql_data` 中,即使容器被删除也会保留
2. 上传的文件保存在宿主机的 `./uploads` 目录,并映射到容器内的 `/app/uploads`
3. 初始化脚本位于 `./scripts` 目录,会在 MySQL 容器首次启动时执行