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

2.3 KiB
Raw Permalink Blame History

Docker 部署说明

项目 Docker 化说明

本项目使用 Docker 和 Docker Compose 进行容器化部署,包含两个主要服务:

  • Next.js 应用服务(基于 Node.js 22
  • MySQL 数据库服务

前提条件

部署步骤

1. 构建并启动服务

# 构建并在后台启动所有服务
docker-compose up -d

# 只构建不启动
docker-compose build

# 查看服务日志
docker-compose logs -f

2. 访问应用

应用将在以下地址可用:

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 使用多阶段构建以优化最终镜像大小:

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