# DataMover Docker 部署指南


# 前置条件

若您无Docker环境,可寻求AI指导安装,或参考安装教程:https://www.cnblogs.com/twoshuai/p/19205895

组件 版本要求
Docker Engine 20.10+
Docker Compose 2.x+(即 docker compose 命令)

无需额外配置镜像加速或代理。部署脚本会从阿里云 ACR(国内镜像仓库)拉取所有依赖镜像,拉取后自动重命名标签为本地名称,并运行。


# 一键安装

在服务器上执行以下命令,自动完成下载、解压、部署:

macOS / Linux

curl -fsSL https://down.datamover.cn/install.sh | bash

Windows PowerShell:

Set-ExecutionPolicy Bypass -Scope Process -Force; irm https://down.datamover.cn/install.ps1 | iex

macOS / Linux / Windows (WSL) 均支持。

脚本会自动检测环境、下载压缩包并启动所有服务。

首次启动需要 3-5 分钟完成 MySQL 初始化 + Flyway 建表,请耐心等待。 默认管理员账号:admin,密码:admin123


# 手动部署

如果希望自行下载压缩包并检查内容,请按以下步骤操作。

# 第 1 步:下载

从官网下载 datamover-docker.zip 到服务器。

https://down.datamover.cn/datamover-docker.zip

# 第 2 步:解压

解压到任意目录:

datamover-docker/
├── docker-compose.yml
├── deploy.sh              # Linux 部署脚本
├── deploy.ps1             # Windows 部署脚本
├── .env
├── 使用说明.md              # 使用说明
└── mysql/
    └── init/
        └── 01-grant-privileges.sql

# 第 3 步:(可选)修改配置

编辑 .env 文件,按需修改数据库密码:

DM_DB_PASSWORD=你的密码

不修改则使用默认密码 Dm@2024#Secure!

# 第 4 步:部署启动

cd datamover-docker

# Linux
chmod +x deploy.sh
./deploy.sh

# Windows PowerShell
.\deploy.ps1

部署脚本会自动完成:

  1. 检测 Docker 和 Docker Compose 环境
  2. 从镜像仓库拉取 Manager 和 Worker 镜像
  3. 启动所有服务

首次启动时 MySQL 需要初始化数据目录(约 30-60 秒),Manager 和 Worker 会自动等待 MySQL 就绪后再启动。

查看启动日志:

docker compose logs -f

# 第 5 步:访问服务

服务 地址
Manager Web 界面 http://localhost:8000
Worker 接口 http://localhost:8011

默认管理员账号:admin 默认管理员密码:admin123


# 离线部署(内网环境)

如果部署服务器无法访问公网,可通过一台公网机器中转镜像。

# 第 1 步:在公网机器上准备

# 1. 拉取镜像(需先配置 ACR 访问权限)
./deploy.sh --pull

# 2. 导出镜像为 tar 文件
./save-images.sh

# 3. 将 datamover-docker.zip 和所有 .tar 文件一起拷贝到内网机器

# 第 2 步:在内网机器上部署

# 1. 解压
unzip datamover-docker.zip
cd datamover-docker

# 2. 导入镜像
./load-images.sh /path/to/tar/files

# 3. 启动服务(跳过镜像拉取)
./deploy.sh --no-pull

--no-pull 会执行环境检测和端口检测,但跳过从 ACR 拉取镜像的步骤。


# 部署脚本命令参考

# 完整部署(自动检测端口冲突,自动拉取镜像并启动)
./deploy.sh

# 环境检测 / 镜像操作
./deploy.sh --check         # 仅检测 Docker 和 Compose 环境
./deploy.sh --pull          # 仅拉取镜像并重新标记

# 启停控制(可指定单个服务)
./deploy.sh --stop          # 停止所有服务
./deploy.sh --stop worker   # 仅停止 worker
./deploy.sh --stop manager  # 仅停止 manager

./deploy.sh --restart       # 重启所有服务
./deploy.sh --restart worker # 仅重启 worker
./deploy.sh --restart manager # 仅重启 manager

./deploy.sh --down          # 停止并删除容器
./deploy.sh --down-v        # 停止并删除容器和数据卷(谨慎!)

Windows PowerShell:

# 完整部署(自动检测端口冲突,自动拉取镜像并启动)
.\deploy.ps1

# 环境检测 / 镜像操作
.\deploy.ps1 -Action Check        # 仅检测环境
.\deploy.ps1 -Action Pull         # 仅拉取镜像

# 启停控制(可指定单个服务)
.\deploy.ps1 -Action Stop              # 停止所有服务
.\deploy.ps1 -Action Stop -Service worker  # 仅停止 worker

.\deploy.ps1 -Action Restart           # 重启所有服务
.\deploy.ps1 -Action Restart -Service manager  # 仅重启 manager

.\deploy.ps1 -Action Down         # 停止并删除容器
.\deploy.ps1 -Action DownV        # 停止并删除容器和数据卷

# 配置参考

所有配置通过环境变量注入,可在 .env 文件或 docker-compose.yml 中修改:

变量 默认值 说明
TZ Asia/Shanghai 容器时区,默认为北京时间
DM_DB_PASSWORD Dm@2024#Secure! MySQL root / datamover 用户密码
DM_DB_HOST mysql:3306 数据库地址(一般无需修改)
DM_DB_NAME datamover 数据库名
DM_DB_USER datamover 数据库连接用户
DM_LOCAL_IP 自动检测 本机注册 IP(多网卡环境需手动指定)
DM_WEB_IP manager Manager 地址(Worker 注册用)
DM_WEB_PORT 8000 Manager 端口
DM_NODE_ID 默认 UUID Worker 节点 ID(多 Worker 时需各自唯一)
JAVA_OPTS 额外的 JVM 参数(如 -Xms512m -Xmx2g

# JVM 内存配置

.envdocker-compose.yml 中设置:

# docker-compose.yml
worker:
  environment:
    JAVA_OPTS: "-Xms512m -Xmx2g"
# .env
JAVA_OPTS=-Xms512m -Xmx2g

# 常见问题

# 1. 端口冲突

deploy.sh 会自动检测 3306 / 8000 / 8011 是否被占用,若被占用则自动更换为其他可用端口,并在启动完成后告知实际端口地址。

如需手动指定端口,修改 docker-compose.yml 中的端口映射:

ports:
  - "3307:3306"   # 主机 3307 → 容器 3306
  - "8001:8000"   # 主机 8001 → 容器 8000
  - "8012:8011"   # 主机 8012 → 容器 8011

# 2. 部署脚本拉取镜像失败

确认网络可访问阿里云 ACR。如果在内网环境,请联系部署方获取离线镜像包。

# 3. 如何多开 Worker

复制 Worker 服务配置,修改容器名和节点 ID,添加到 docker-compose.ymlservices 下:

worker-2:
  image: datamover-worker:latest
  container_name: datamover-worker-2
  environment:
    DM_LOCAL_IP: worker-2
    DM_NODE_ID: <新的唯一UUID>
    DM_DB_PASSWORD: ${DM_DB_PASSWORD}

# 4. 数据持久化

MySQL 数据存储在 Docker 命名卷 datamover_mysql-data 中。docker compose down 不会丢失数据。如需彻底清理:

docker compose down -v

# 5. 如何升级

从官网下载最新压缩包,解压后执行:

./deploy.sh

脚本会自动拉取最新镜像,重新部署。


# 架构

┌───────────────────┐     3306      ┌──────────────────┐
│    MySQL 8.0      │◄─────────────│   Manager 容器    │
│  (datamover 库)   │              │  端口 8000        │
│                   │─────────────►│  Web 管理界面     │
└───────────────────┘     JDBC     └────────┬─────────┘
                                             │ HTTP
                                    ┌────────▼─────────┐
                                    │   Worker 容器     │
                                    │  端口 8011        │
                                    │  执行引擎         │
                                    └──────────────────┘