# 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 容器首次启动时执行