Win11下WSL2+Docker部署DolphinScheduler指南
本文提供两种部署方案:
- 快速体验方案 :使用Standalone镜像,单条命令即可启动(
docker run -d -p 12345:12345 apache/dolphinscheduler-standalone-server:3.2.1),适合功能测试,默认账号为admin/dolphinscheduler123。- 开发调试方案:通过源码编译(需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环境就绪
无论选择哪种方案,都请先确认以下基础环境已经就绪:
-
启用WSL2 :以管理员身份打开PowerShell,运行
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux,然后重启电脑。同时,确保在"启用或关闭Windows功能"中勾选了"虚拟机平台"。 -
安装WSL2发行版:在Microsoft Store中安装你喜欢的Linux发行版(如Ubuntu 20.04 LTS),并将其设置为WSL2版本。
-
安装Docker Desktop :下载并安装Docker Desktop for Windows,安装过程中确保启用**"使用基于WSL2的Docker引擎"** 选项。安装后,在Docker Desktop的 Settings > Resources > WSL Integration 中,启用你安装的Ubuntu发行版,这样在WSL2内部就能直接使用Docker命令了。
🚀 方案一:使用Standalone镜像快速体验
这是最快的方式,适合想立即上手使用的朋友。
-
打开你的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这里将宿主机的
12345和8888端口映射到了容器内,方便后续访问。 -
验证并访问:
-
在WSL2终端运行
docker ps确认容器状态为Up。 -
在Windows浏览器中访问
http://localhost:12345/dolphinscheduler/ui/login。 -
使用默认账号密码登录:
admin/dolphinscheduler123。
-
🛠️ 方案二:源码编译 + 依赖容器(适合开发者)
这个方案更复杂,但为深入学习和开发DolphinScheduler提供了可能。
-
获取源码并编译:
-
在WSL2终端中,用Git克隆官方仓库:
git clone https://github.com/apache/dolphinscheduler.git。 -
进入项目目录,执行编译命令(这会花费一些时间):
bash
cd dolphinscheduler ./mvnw clean install -DskipTests
-
-
启动依赖服务(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 5432和Test-NetConnection localhost -Port 2181,确保均连接成功。
-
-
初始化元数据库:
-
编译成功后,在项目根目录下执行以下命令,将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
-
-
在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。
-
-
验证:
-
访问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)时,都能自动走国内的代理节点,速度更快。
-
修改 Docker 配置文件 :在 WSL2 终端中,编辑或创建
/etc/docker/daemon.json文件:bash
sudo vim /etc/docker/daemon.json -
填入以下内容(这里有几个国内常用的镜像加速地址):
json
{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] }其中
docker.1ms.run和docker.xuanyuan.me是来自开源社区维护的镜像加速服务。 -
重启 Docker 服务,让配置生效:
bash
sudo systemctl daemon-reload sudo systemctl restart docker -
重新拉取镜像 :完成以上设置后,再使用
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 界面端口
✅ 验证容器是否启动成功
-
检查容器状态:
bash
docker ps你应该能看到
dolphinscheduler容器的状态是Up(运行中)。 -
查看启动日志(可选):
bash
docker logs -f dolphinscheduler按
Ctrl+C可以退出日志查看。 -
访问 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 退出 |
💡 重要建议
-
保持 Docker Desktop 运行:只要你需要访问 DolphinScheduler,Docker Desktop 就需要保持运行状态。可以把它最小化到系统托盘。
-
设置 Docker Desktop 开机自启(可选):
-
打开 Docker Desktop
-
点击右上角的齿轮图标(Settings)
-
在 General 选项卡中,勾选 "Start Docker Desktop when you log in"
-
-
容器随 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,建议:
-
保持当前终端窗口开着,或者直接关闭也行(容器在后台)
-
在浏览器中继续探索 DolphinScheduler 的功能
-
如果想关闭终端,先确保
docker ps看到容器在运行,然后放心关掉终端即可