Win11,WSL2+Docker 环境,安装 DolphinScheduler 完整指南

Win11下WSL2+Docker部署DolphinScheduler指南


本文提供两种部署方案:

  1. 快速体验方案 :使用Standalone镜像,单条命令即可启动(docker run -d -p 12345:12345 apache/dolphinscheduler-standalone-server:3.2.1),适合功能测试,默认账号为admin/dolphinscheduler123。
  2. 开发调试方案:通过源码编译(需JDK8)并配合Docker Compose启动依赖服务(PostgreSQL+ZooKeeper),支持IDEA调试,适合二次开发。

关键步骤

  • 确保WSL2和Docker Desktop环境就绪
  • 国内用户可配置镜像加速(如阿里云)提升拉取速度
  • 容器需保持后台运行,关闭终端不影响服务,但需保持Docker Desktop运行

注意事项

  • 若端口冲突可调整映射(如12346:12345)
  • 开发时需按顺序启动Master、Worker、API服务
  • 常见问题包括ZooKeeper连接失败或数据库初始化异常,需检查端口及日志

两种方案均支持Win11系统,用户可根据需求选择快速体验或深度开发模式。

Win11,WSL2+Docker 环境,安装 DolphinScheduler 完整指南


在Win11的WSL2+Docker环境下安装DolphinScheduler,最便捷、最推荐的方式是使用官方提供的Standalone镜像 ,一条命令就能快速体验核心功能。如果你的目标是进行源码级调试和开发,则可以选择用Docker Compose启动依赖服务,在IDEA中分别启动各个组件。

我把这两种方案整理成了下面的表格,方便你对比选择:

方案 目标人群 核心思路 优点 缺点
方案一:Standalone镜像 快速体验、功能试用 直接拉取并运行一个包含了所有服务的单体容器 极简,一条命令启动,无需配置 无法进行源码调试
方案二:源码编译+依赖容器 源码阅读、二次开发 在WSL2中编译源码,用Docker启动PostgreSQL和ZooKeeper,再在IDEA中分别启动各个服务 可调试、修改源码,深入了解架构 步骤多,对开发环境有一定要求

准备工作:确保WSL2与Docker环境就绪

无论选择哪种方案,都请先确认以下基础环境已经就绪:

  1. 启用WSL2 :以管理员身份打开PowerShell,运行 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux,然后重启电脑。同时,确保在"启用或关闭Windows功能"中勾选了"虚拟机平台"。

  2. 安装WSL2发行版:在Microsoft Store中安装你喜欢的Linux发行版(如Ubuntu 20.04 LTS),并将其设置为WSL2版本。

  3. 安装Docker Desktop :下载并安装Docker Desktop for Windows,安装过程中确保启用**"使用基于WSL2的Docker引擎"** 选项。安装后,在Docker Desktop的 Settings > Resources > WSL Integration 中,启用你安装的Ubuntu发行版,这样在WSL2内部就能直接使用Docker命令了。


🚀 方案一:使用Standalone镜像快速体验

这是最快的方式,适合想立即上手使用的朋友。

  1. 打开你的WSL2终端(比如Ubuntu),直接拉取并运行Standalone镜像:

    bash

    复制代码
    # 拉取镜像(版本号请根据需要替换,例如 3.2.1)
    docker pull apache/dolphinscheduler-standalone-server:3.2.1
    
    # 运行容器
    docker run -d --name dolphinscheduler \
        -p 12345:12345 \
        -p 8888:8888 \
        apache/dolphinscheduler-standalone-server:3.2.1

    这里将宿主机的123458888端口映射到了容器内,方便后续访问。

  2. 验证并访问

    • 在WSL2终端运行 docker ps 确认容器状态为 Up

    • 在Windows浏览器中访问 http://localhost:12345/dolphinscheduler/ui/login

    • 使用默认账号密码登录:admin / dolphinscheduler123


🛠️ 方案二:源码编译 + 依赖容器(适合开发者)

这个方案更复杂,但为深入学习和开发DolphinScheduler提供了可能。

  1. 获取源码并编译

    • 在WSL2终端中,用Git克隆官方仓库:git clone https://github.com/apache/dolphinscheduler.git

    • 进入项目目录,执行编译命令(这会花费一些时间):

      bash

      复制代码
      cd dolphinscheduler
      ./mvnw clean install -DskipTests
  2. 启动依赖服务(PostgreSQL & ZooKeeper)

    • 进入Docker部署目录:cd deploy/docker

    • 使用专门为Windows准备的Compose文件启动数据库和ZK服务,注意 :必须确保ZooKeeper的2181端口映射到了宿主机,否则IDEA中的Java进程无法连接。

    • 你可以参考以下docker-compose-windows.yml文件内容:

      yaml

      复制代码
      version: "3.8"
      services:
        dolphinscheduler-postgresql:
          image: bitnami/postgresql:latest
          ports:
            - "5432:5432"
          environment:
            POSTGRESQL_USERNAME: root
            POSTGRESQL_PASSWORD: root
            POSTGRESQL_DATABASE: dolphinscheduler
          networks:
            - dolphinscheduler
        dolphinscheduler-zookeeper:
          image: zookeeper:3.8
          ports:
            - "2181:2181"
          environment:
            ALLOW_ANONYMOUS_LOGIN: "yes"
          networks:
            - dolphinscheduler
      networks:
        dolphinscheduler:
          driver: bridge
    • 启动服务:docker-compose -f docker-compose-windows.yml up -d dolphinscheduler-postgresql dolphinscheduler-zookeeper

    • 验证端口连通性:在Windows PowerShell中运行 Test-NetConnection localhost -Port 5432Test-NetConnection localhost -Port 2181,确保均连接成功。

  3. 初始化元数据库

    • 编译成功后,在项目根目录下执行以下命令,将SQL脚本导入PostgreSQL容器:

      bash

      复制代码
      # 注意容器名可能不同,请先用docker ps确认
      cat dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql | docker exec -i docker-dolphinscheduler-postgresql-1 psql -U root -d dolphinscheduler
  4. 在IDEA中配置和启动服务

    • 使用IDEA打开项目,并确保配置好JDK 8或11。

    • 创建三个启动配置(Run Configuration),分别对应Master、Worker和Api服务,可以参考下表:

    服务 Main Class 关键VM选项(示例)
    MasterServer org.apache.dolphinscheduler.server.master.MasterServer 无特殊要求
    WorkerServer org.apache.dolphinscheduler.server.worker.WorkerServer 无特殊要求
    ApiApplicationServer org.apache.dolphinscheduler.api.ApiApplicationServer -Dspring.profiles.active=postgresql
    • 重要 :在每个启动配置中,务必勾选 Add dependencies with "provided" scope to classpath,否则启动时会因缺少依赖而报错。

    • 推荐启动顺序:MasterServer → WorkerServer → ApiApplicationServer。

  5. 验证

    • 访问API健康检查:http://localhost:12345/dolphinscheduler/actuator/health,应返回 {"status":"UP"}

    • 同样访问 http://localhost:12345/dolphinscheduler/ui/login,使用默认账号密码登录。


⚠️ 常见问题与排错

  • ZooKeeper连接失败 :出现 zookeeper connect failed 错误时,首先检查WSL2终端中运行 docker ps,确认ZK容器已启动。其次,在Windows PowerShell中用 Test-NetConnection localhost -Port 2181 检查端口是否可访问。

  • 数据库初始化失败 :如果启动API服务时日志提示 relation "t_ds_version" does not exist,说明元数据库未正确初始化。请回到"方案二"的第三步,重新执行SQL脚本,并确认脚本执行过程中没有报错。

  • 端口被占用 :如果启动Api服务时提示12345端口被占用,可以在IDEA的启动配置中添加VM参数 -Dserver.port=12346 来更换端口。如果坚持使用默认端口,则需要找到并关闭占用该端口的进程。


有没有国内镜像


有的。在国内拉取 Docker 镜像时,为了提升速度,通常有两种思路:配置 Docker Hub 的国内镜像加速器 ,或者直接使用国内的镜像源来拉取

针对 DolphinScheduler,这两个方法都可以试试。

⚙️ 方法一:配置 Docker 镜像加速器(一劳永逸)

这个方法通过设置 Docker 的国内镜像代理,让你后续拉取任何官方镜像(包括 apache/dolphinscheduler-standalone-server)时,都能自动走国内的代理节点,速度更快。

  1. 修改 Docker 配置文件 :在 WSL2 终端中,编辑或创建 /etc/docker/daemon.json 文件:

    bash

    复制代码
    sudo vim /etc/docker/daemon.json
  2. 填入以下内容(这里有几个国内常用的镜像加速地址):

    json

    复制代码
    {
      "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.xuanyuan.me"
      ]
    }

    其中 docker.1ms.rundocker.xuanyuan.me 是来自开源社区维护的镜像加速服务。

  3. 重启 Docker 服务,让配置生效:

    bash

    复制代码
    sudo systemctl daemon-reload
    sudo systemctl restart docker
  4. 重新拉取镜像 :完成以上设置后,再使用 docker pull apache/dolphinscheduler-standalone-server:3.2.1 拉取,速度就会有明显提升。

🚀 方法二:直接使用国内镜像源拉取(更快,无中间层)

如果你不想修改全局配置,只想快速拉取,可以直接使用社区提供的国内镜像仓库地址。虽然有搜索结果提到了像 registry.cn-hangzhou.aliyuncs.com/docker_image-ljx/dolphinscheduler-master 这样的特定仓库,但其时效性、版本和稳定性都无法保证

相比之下,轩辕镜像(docker.xuanyuan.run)提供了一个比较可靠的选择,它是 Docker Hub 的代理镜像。你可以直接用它来拉取Standalone镜像:

bash

复制代码
docker pull docker.xuanyuan.run/apache/dolphinscheduler-standalone-server:3.2.1

拉取成功后,你可以通过 docker tag 命令将其重命名为官方镜像名,避免后续命令冲突:

bash

复制代码
docker tag docker.xuanyuan.run/apache/dolphinscheduler-standalone-server:3.2.1 apache/dolphinscheduler-standalone-server:3.2.1

💡 补充提示:源码编译时也可以加速

如果你最终选择的是 源码编译方案 ,在 ./mvnw clean install 之前,也强烈建议配置 Maven 使用国内的阿里云镜像仓库,这样能极大加快 Java 依赖包的下载速度。在 Maven 的 settings.xml 文件中加入以下配置即可:

xml

复制代码
<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

DolphinScheduler对JDK版本的严格要求,我应该装哪个版本的,WSL中的是Java8


根据目前DolphinScheduler的官方文档和社区实践,你WSL中的Java 8是完全可以使用的,而且是官方推荐的稳定版本

关于JDK版本,有几个核心信息你需要了解:

  • 基础要求是JDK 1.8+ :绝大多数的官方文档和部署指南都明确要求安装JDK 1.8+ (也就是Java 8或更高版本),并正确配置JAVA_HOME环境变量。这是运行DolphinScheduler的最低门槛,你WSL中的Java 8完全满足。

  • 开发环境有更具体的建议 :如果你是为了二次开发而搭建环境,有一点需要特别注意:一份针对贡献者的开发环境搭建指南(针对3.2.1版本)明确指出,当前暂不支持JDK 11,推荐使用JDK 1.8.x 。另一份近期指南也提到,项目根pom.xml中指定的java.version是1.8,建议调试时使用JDK 8或11 。综合来看,Java 8是目前兼容性最稳妥的选择

  • 关于更高版本的兼容性风险:虽然官方要求是1.8+,但社区有测试表明,在生产环境中使用更高版本(如JDK 11)可能存在一些兼容性风险,而JDK 1.8被认为是稳定运行的基础。

因此,你可以直接使用WSL中已有的Java 8继续安装。需要留意的唯一情况是,如果你未来要基于最新代码进行深度开发,可以再关注一下官方对JDK 11的支持进展。


我是说这个版本拉取镜像(版本号请根据需要替换,例如 3.2.1) docker pull apache/dolphinscheduler-standalone-server:3.2.1 应该下载哪个


既然你的 WSL 环境中已经是 Java 8,那么这个 3.2.1 版本的 Docker 镜像完全可以放心使用。DolphinScheduler 的 Docker 镜像对运行环境的要求很明确,就是 JDK 1.8+,所以 Java 8 是符合要求的。

拉取命令

直接使用下面的命令拉取 3.2.1 版本的 Standalone 镜像就可以了:

bash

bash 复制代码
docker pull apache/dolphinscheduler-standalone-server:3.2.1

启动后,通过 http://localhost:12345/dolphinscheduler/ui 就能访问,默认账号是 admin,密码是 dolphinscheduler123


bash 复制代码
mumu@MuJinqiu:~$ docker pull apache/dolphinscheduler-standalone-server:3.2.1
3.2.1: Pulling from apache/dolphinscheduler-standalone-server
a14e3f4e5fb0: Pull complete
aeca6a207a8e: Pull complete
31bd5f451a84: Pull complete
8cb55052776d: Pull complete
c77c5b1038cb: Pull complete
826877f016d8: Pull complete
ace52e4a8e2a: Pull complete
32b311b806c8: Pull complete
1ad4dfa8cf66: Download complete
Digest: sha256:d3b9562b203d913f898bd1b55bb77f2dd34e23d55e1576e7635f0a41903977ea
Status: Downloaded newer image for apache/dolphinscheduler-standalone-server:3.2.1
docker.io/apache/dolphinscheduler-standalone-server:3.2.1
mumu@MuJinqiu:~$

太好了!镜像已经成功拉取下来了。现在可以按照计划启动容器了。

🚀 启动 DolphinScheduler Standalone 容器

执行以下命令来运行容器:

bash

复制代码
docker run -d --name dolphinscheduler \
    -p 12345:12345 \
    -p 8888:8888 \
    apache/dolphinscheduler-standalone-server:3.2.1

参数说明

  • -d:后台运行

  • --name dolphinscheduler:给容器命名为 dolphinscheduler

  • -p 12345:12345:映射 API 服务端口

  • -p 8888:8888:映射 UI 界面端口

✅ 验证容器是否启动成功

  1. 检查容器状态

    bash

    复制代码
    docker ps

    你应该能看到 dolphinscheduler 容器的状态是 Up(运行中)。

  2. 查看启动日志(可选):

    bash

    复制代码
    docker logs -f dolphinscheduler

    Ctrl+C 可以退出日志查看。

  3. 访问 DolphinScheduler Web UI

    在 Windows 浏览器中打开:http://localhost:12345/dolphinscheduler/ui/login

    默认账号密码

    • 用户名:admin

    • 密码:dolphinscheduler123

💡 小贴士

  • 如果 12345 或 8888 端口被占用,可以换成其他端口,比如:

    bash

    复制代码
    docker run -d --name dolphinscheduler \
        -p 12346:12345 \
        -p 8889:8888 \
        apache/dolphinscheduler-standalone-server:3.2.1

    然后访问 http://localhost:12346/dolphinscheduler/ui/login

  • 如果容器启动后无法访问,可以检查日志看看有没有报错:

    bash

    复制代码
    docker logs dolphinscheduler

试一下启动命令,看看能否正常访问 UI 界面。如果遇到问题,随时把报错信息发给我,我帮你看看。

现在可以正常访问 UI 界面,然后终端服务不能关闭是吧

是的,终端窗口不能关闭,但这个问题有更好的解决方案。

当前情况说明

你使用 docker run -d 启动的容器已经在后台运行了,所以:

  • 可以关闭当前 WSL 终端窗口,容器不会停止

  • 但不能关闭 Docker Desktop,如果关闭 Docker Desktop,所有容器都会停止

验证容器是否持续运行

你可以测试一下:先关闭当前 WSL 终端,然后重新打开一个新的 WSL 终端,运行:

bash

复制代码
docker ps

你会看到 dolphinscheduler 容器依然在运行列表中,状态是 Up

容器管理常用命令

操作 命令 说明
查看运行中的容器 docker ps 列出所有正在运行的容器
查看所有容器(含已停止的) docker ps -a 包括已停止的容器
停止容器 docker stop dolphinscheduler 优雅停止
启动已停止的容器 docker start dolphinscheduler 重新启动
重启容器 docker restart dolphinscheduler 重启
删除容器 docker rm dolphinscheduler 需要先停止容器
查看容器日志 docker logs dolphinscheduler 查看输出日志
实时查看日志 docker logs -f dolphinscheduler 按 Ctrl+C 退出

💡 重要建议

  1. 保持 Docker Desktop 运行:只要你需要访问 DolphinScheduler,Docker Desktop 就需要保持运行状态。可以把它最小化到系统托盘。

  2. 设置 Docker Desktop 开机自启(可选):

    • 打开 Docker Desktop

    • 点击右上角的齿轮图标(Settings)

    • 在 General 选项卡中,勾选 "Start Docker Desktop when you log in"

  3. 容器随 Docker 自动启动(可选):

    • 在启动容器时添加 --restart always 参数,这样即使重启电脑,Docker 启动后容器也会自动运行:

    bash

    复制代码
    docker run -d --name dolphinscheduler \
        --restart always \
        -p 12345:12345 \
        -p 8888:8888 \
        apache/dolphinscheduler-standalone-server:3.2.1

建议你现在做的

既然已经能正常访问 UI,建议:

  1. 保持当前终端窗口开着,或者直接关闭也行(容器在后台)

  2. 在浏览器中继续探索 DolphinScheduler 的功能

  3. 如果想关闭终端,先确保 docker ps 看到容器在运行,然后放心关掉终端即可