SAAS/README-DOCKER.md

93 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

2025-05-14 00:30:11 +08:00
# 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 容器首次启动时执行