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