From 5a996c11d29981577925ea6fdf9c1eda13ff4f76 Mon Sep 17 00:00:00 2001
From: Jay Chung
Date: Tue, 25 Apr 2023 09:35:49 +0800
Subject: [PATCH] cherry-pick doc: Change readme and standalone docker quick
start #14002
---
.asf.yaml | 2 +-
CONTRIBUTING.md | 103 ++------------
README.md | 119 ++++++----------
README_zh_CN.md | 130 +++++++-----------
docs/docs/en/guide/installation/standalone.md | 8 +-
docs/docs/en/guide/start/docker.md | 30 ++--
docs/docs/zh/guide/installation/standalone.md | 16 ++-
docs/docs/zh/guide/start/docker.md | 32 ++---
images/{en_US => }/data-source.png | Bin
images/en_US/dag.png | Bin 83114 -> 0 bytes
images/{en_US => }/home.png | Bin
images/{en_US/master.png => monitor.png} | Bin
images/workflow-definition.png | Bin 0 -> 188111 bytes
images/{en_US => }/workflow-tree.png | Bin
images/zh_CN/dag.png | Bin 81763 -> 0 bytes
images/zh_CN/data-source.png | Bin 80379 -> 0 bytes
images/zh_CN/home.png | Bin 105634 -> 0 bytes
images/zh_CN/master.png | Bin 75011 -> 0 bytes
images/zh_CN/workflow-tree.png | Bin 64917 -> 0 bytes
19 files changed, 151 insertions(+), 289 deletions(-)
rename images/{en_US => }/data-source.png (100%)
delete mode 100644 images/en_US/dag.png
rename images/{en_US => }/home.png (100%)
rename images/{en_US/master.png => monitor.png} (100%)
create mode 100644 images/workflow-definition.png
rename images/{en_US => }/workflow-tree.png (100%)
delete mode 100644 images/zh_CN/dag.png
delete mode 100644 images/zh_CN/data-source.png
delete mode 100644 images/zh_CN/home.png
delete mode 100644 images/zh_CN/master.png
delete mode 100644 images/zh_CN/workflow-tree.png
diff --git a/.asf.yaml b/.asf.yaml
index 3e867d38b6..72f45fb0b6 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -16,7 +16,7 @@
#
github:
- description: Apache DolphinScheduler is a distributed and extensible workflow scheduler platform with powerful DAG visual interfaces, dedicated to solving complex job dependencies in the data pipeline and providing various types of jobs available out of box.
+ description: Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code
homepage: https://dolphinscheduler.apache.org/
labels:
- airflow
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index c5802c5d01..192e8fda4d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,99 +1,24 @@
-# How To Contribute
+Please refer to the contribution document [How to contribute](docs/docs/en/contribute/join/contribute.md)
-Start by forking the dolphinscheduler GitHub repository, make changes in a branch and then send a pull request.
+## How to Build
-## Set up your dolphinscheduler GitHub Repository
-
-There are three branches in the remote repository currently:
-
-- `master` : normal delivery branch. After the stable version is released, the code for the stable version branch is merged into the master branch.
-
-- `dev` : daily development branch. The daily development branch, the newly submitted code can pull requests to this branch.
-
-- `x.x.x-release` : the stable release version.
-
-So, you should fork the `dev` branch.
-
-After forking the [dolphinscheduler upstream source repository](https://github.com/apache/dolphinscheduler/fork) to your personal repository, you can set your personal development environment.
-
-```sh
-cd
-git clone
-cd dolphinscheduler
+```bash
+./mvnw clean install -Prelease
```
-## Set git remote as `upstream`
+### Build with different Zookeeper versions
-Add remote repository address, named upstream
-
-```sh
-git remote add upstream https://github.com/apache/dolphinscheduler.git
+The default Zookeeper Server version supported is 3.8.0.
+```bash
+# Default Zookeeper 3.8.0
+./mvnw clean install -Prelease
+# Support to Zookeeper 3.4.6+
+./mvnw clean install -Prelease -Dzk-3.4
```
-View repository:
+Artifact:
-```sh
-git remote -v
```
-
-There will be two repositories at this time: origin (your own warehouse) and upstream (remote repository)
-
-Get/update remote repository code (already the latest code, skip it).
-
-```sh
-git fetch upstream
+dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-bin.tar.gz: Binary package of DolphinScheduler
+dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-src.tar.gz: Source code package of DolphinScheduler
```
-
-Synchronize remote repository code to local repository
-
-```sh
-git checkout origin/dev
-git merge --no-ff upstream/dev
-```
-
-If remote branch has a new branch `dev-1.0`, you need to synchronize this branch to the local repository, then push to your own repository.
-
-```sh
-git checkout -b dev-1.0 upstream/dev-1.0
-git push --set-upstream origin dev-1.0
-```
-
-## Create your feature branch
-
-Before making code changes, make sure you create a separate branch for them.
-
-```sh
-git checkout -b dev
-```
-
-## Commit changes
-
-After modifying the code locally, submit it to your own repository:
-
-```sh
-git commit -m 'information about your feature'
-```
-
-## Push to the branch
-
-Push your locally committed changes to the remote origin (your fork).
-
-```sh
-git push origin
-```
-
-## Create a pull request
-
-After submitting changes to your remote repository, you should click on the new pull request On the following github page.
-
-
-
-
-
-Select the modified local branch and the branch to merge past to create a pull request.
-
-
-
-
-
-Next, the administrator is responsible for **merging** to complete the pull request.
diff --git a/README.md b/README.md
index 6ed58208da..22027b3d94 100644
--- a/README.md
+++ b/README.md
@@ -1,46 +1,36 @@
-Dolphin Scheduler Official Website
-[dolphinscheduler.apache.org](https://dolphinscheduler.apache.org)
-==================================================================
+# Apache Dolphinscheduler
[](https://www.apache.org/licenses/LICENSE-2.0.html)
-[](https://codecov.io/gh/apache/dolphinscheduler/branch/dev)
+
[](https://sonarcloud.io/dashboard?id=apache-dolphinscheduler)
[](https://twitter.com/dolphinschedule)
[](https://s.apache.org/dolphinscheduler-slack)
-
-[](https://starchart.cc/apache/dolphinscheduler)
-
-[](README.md)
[](README_zh_CN.md)
-## Design Features
+## About
-DolphinScheduler is a distributed and extensible workflow scheduler platform with powerful DAG visual interfaces, dedicated to solving complex job dependencies in the data pipeline and providing various types of jobs available `out of the box`.
+Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code. It is also provided powerful user interface,
+dedicated to solving complex task dependencies in the data pipeline and providing various types of jobs available **out of the box**
The key features for DolphinScheduler are as follows:
-- Easy to deploy, we provide 4 ways to deploy, such as Standalone deployment,Cluster deployment,Docker / Kubernetes deployment and Rainbond deployment
-- Easy to use, there are four ways to create workflows:
- - Visually, create tasks by dragging and dropping tasks
- - [PyDolphinScheduler](https://dolphinscheduler.apache.org/python/main/index.html), Creating workflows via Python API, aka workflow-as-code
- - Yaml definition, mapping yaml into workflow(have to install PyDolphinScheduler currently)
- - Open API, Creating workflows
-- Highly Reliable,
-DolphinScheduler uses a decentralized multi-master and multi-worker architecture, which naturally supports horizontal scaling and high availability
+- Easy to deploy, provide four ways to deploy which including Standalone, Cluster, Docker and Kubernetes.
+- Easy to use, workflow can be created and managed by four ways, which including Web UI, [Python SDK](https://dolphinscheduler.apache.org/python/main/index.html), Yaml file and Open API
+- Highly reliable and high availability, decentralized architecture with multi-master and multi-worker, native supports horizontal scaling.
- High performance, its performance is N times faster than other orchestration platform and it can support tens of millions of tasks per day
-- Supports multi-tenancy
-- Supports various task types: Shell, MR, Spark, SQL (MySQL, PostgreSQL, Hive, Spark SQL), Python, Procedure, Sub_Workflow,
-Http, K8s, Jupyter, MLflow, SageMaker, DVC, Pytorch, Amazon EMR, etc
-- Orchestrating workflows and dependencies, you can pause/stop/recover task any time, failed tasks can be set to automatically retry
-- Visualizing the running state of the task in real-time and seeing the task runtime log
-- What you see is what you get when you edit the task on the UI
-- Backfill can be operated on the UI directly
-- Perfect project, resource, data source-level permission control
-- Displaying workflow history in tree/Gantt chart, as well as statistical analysis on the task status & process status in each workflow
-- Supports internationalization
-- Cloud Native, DolphinScheduler supports orchestrating multi-cloud/data center workflow, and
-supports custom task type
-- More features waiting for partners to explore
+- Cloud Native, DolphinScheduler supports orchestrating multi-cloud/data center workflow, and supports custom task type
+- Versioning both workflow and workflow instance(including tasks)
+- Various state control of workflow and task, support pause/stop/recover them in any time
+- Multi-tenancy support
+- Others like backfill support(Web UI native), permission control including project, resource and data source
+
+## QuickStart
+
+- For quick experience
+ - Want to [start with standalone](https://dolphinscheduler.apache.org/en-us/docs/3.1.5/guide/installation/standalone)
+ - Want to [start with Docker](https://dolphinscheduler.apache.org/en-us/docs/3.1.5/guide/start/docker)
+- For Kubernetes
+ - [Start with Kubernetes](https://dolphinscheduler.apache.org/en-us/docs/3.1.5/guide/installation/kubernetes)
| Stability | Accessibility | Features | Scalability |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -50,62 +40,37 @@ supports custom task type
## User Interface Screenshots
-
-
-
-
-
+* **Homepage:** Project and workflow overview, including the latest workflow instance and task instance status statistics.
+
-## QuickStart in Docker
+* **Workflow Definition:** Create and manage workflow by drag and drop, easy to build and maintain complex workflow, support [bulk of tasks](https://dolphinscheduler.apache.org/en-us/docs/3.1.5/introduction-to-functions_menu/task_menu) out of box.
+
-Please refer the official website document: [QuickStart in Docker](https://dolphinscheduler.apache.org/en-us/docs/3.1.2/guide/start/docker)
+* **Workflow Tree View:** Abstract tree structure could clearer understanding of the relationship between tasks
+
-## QuickStart in Kubernetes
+* **Data source:** Manage support multiple external data sources, provide unified data access capabilities for such as MySQL, PostgreSQL, Hive, Trino, etc.
+
-Please refer to the official website document: [QuickStart in Kubernetes](https://dolphinscheduler.apache.org/en-us/docs/3.1.2/guide/installation/kubernetes)
+* **Monitor:** View the status of the master, worker and database in real time, including server resource usage and load, do quick health check without logging in to the server.
+
-## How to Build
+## Suggestions & Bug Reports
-```bash
-./mvnw clean install -Prelease
-```
+Follow [this guide](https://github.com/apache/dolphinscheduler/issues/new/choose) to report your suggestions or bugs.
-### Build with different Zookeeper versions
+## Contributing
-The default Zookeeper Server version supported is 3.8.0.
-```bash
-# Default Zookeeper 3.8.0
-./mvnw clean install -Prelease
-# Support to Zookeeper 3.4.6+
-./mvnw clean install -Prelease -Dzk-3.4
-```
-
-Artifact:
-
-```
-dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-bin.tar.gz: Binary package of DolphinScheduler
-dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-src.tar.gz: Source code package of DolphinScheduler
-```
-
-## Thanks
-
-DolphinScheduler is based on a lot of excellent open-source projects, such as Google guava, grpc, netty, quartz, and many open-source projects of Apache and so on.
-We would like to express our deep gratitude to all the open-source projects used in Dolphin Scheduler. We hope that we are not only the beneficiaries of open-source, but also give back to the community. Besides, we hope everyone who have the same enthusiasm and passion for open source could join in and contribute to the open-source community!
-
-## Get Help
-
-1. Submit an [issue](https://github.com/apache/dolphinscheduler/issues/new/choose)
-2. [Join our slack](https://s.apache.org/dolphinscheduler-slack) and send your question to channel `#troubleshooting`
+The community welcomes everyone to contribute, please refer to this page to find out more: [How to contribute](docs/docs/en/contribute/join/contribute.md),
+find the good first issue in [here](https://github.com/apache/dolphinscheduler/contribute) if you are new to DolphinScheduler.
## Community
-You are very welcome to communicate with the developers and users of Dolphin Scheduler. There are two ways to find them:
-1. Join the Slack channel [Slack](https://asf-dolphinscheduler.slack.com/).
-2. Follow the [Twitter account of DolphinScheduler](https://twitter.com/dolphinschedule) and get the latest news on time.
+Welcome to join the Apache DolphinScheduler community by:
-## How to Contribute
-
-The community welcomes everyone to contribute, please refer to this page to find out more: [How to contribute](docs/docs/en/contribute/join/contribute.md).
+- Join the [DolphinScheduler Slack](https://s.apache.org/dolphinscheduler-slack) to keep in touch with the community
+- Follow the [DolphinScheduler Twitter](https://twitter.com/dolphinschedule) and get the latest news
+- Subscribe DolphinScheduler mail list, users@dolphinscheduler.apache.org for user and dev@dolphinscheduler.apache.org for developer
# Landscapes
@@ -116,7 +81,3 @@ The community welcomes everyone to contribute, please refer to this page to find
DolphinScheduler enriches the CNCF CLOUD NATIVE Landscape.
-
-## License
-
-Please refer to the [LICENSE](https://github.com/apache/dolphinscheduler/blob/dev/LICENSE) file.
diff --git a/README_zh_CN.md b/README_zh_CN.md
index 70564b5798..70b78c9eef 100644
--- a/README_zh_CN.md
+++ b/README_zh_CN.md
@@ -1,100 +1,76 @@
-Dolphin Scheduler Official Website
-[dolphinscheduler.apache.org](https://dolphinscheduler.apache.org)
-==================================================================
+# Apache Dolphinscheduler
[](https://www.apache.org/licenses/LICENSE-2.0.html)
[](https://codecov.io/gh/apache/dolphinscheduler/branch/dev)
[](https://sonarcloud.io/dashboard?id=apache-dolphinscheduler)
-
-[](https://starchart.cc/apache/dolphinscheduler)
-
-[](README_zh_CN.md)
+[](https://twitter.com/dolphinschedule)
+[](https://s.apache.org/dolphinscheduler-slack)
[](README.md)
-## 设计特点
+## 关于
一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中`开箱即用`。
-其主要目标如下:
+DolphinScheduler 的主要特性如下:
-- 以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
-- 支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql)、Python、Sub_Process、Procedure等
-- 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
-- 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
-- 支持工作流全局参数及节点自定义参数设置
-- 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
-- 支持任务日志在线查看及滚动、在线下载日志等
-- 实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化
-- 支持对`Master/Worker` cpu load,memory,cpu在线查看
-- 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
-- 支持补数
-- 支持多租户
-- 支持国际化
-- 还有更多等待伙伴们探索
+- 易于部署,提供四种部署方式,包括Standalone、Cluster、Docker和Kubernetes。
+- 易于使用,可以通过四种方式创建和管理工作流,包括Web UI、[Python SDK](https://dolphinscheduler.apache.org/python/main/index.html)、Yaml文件和Open API
+- 高可靠高可用,多主多从的去中心化架构,原生支持横向扩展。
+- 高性能,性能比其他编排平台快N倍,每天可支持千万级任务
+- Cloud Native,DolphinScheduler支持编排多云/数据中心工作流,支持自定义任务类型
+- 对工作流和工作流实例(包括任务)进行版本控制
+- 工作流和任务的多种状态控制,支持随时暂停/停止/恢复它们
+- 多租户支持
+- 其他如回填支持(Web UI 原生),包括项目、资源和数据源的权限控制
+
+## 快速开始
+
+- 如果想要体验
+ - [standalone 启动](https://dolphinscheduler.apache.org/zh-cn/docs/3.1.5/guide/installation/standalone)
+ - [Docker 启动](https://dolphinscheduler.apache.org/zh-cn/docs/3.1.5/guide/start/docker)
+- 想 Kubernetes 部署
+ - [Kubernetes 部署](https://dolphinscheduler.apache.org/zh-cn/docs/3.1.5/guide/installation/kubernetes)
## 系统部分截图
-
-
-
-
-
+* **主页**:项目和工作流概览,包括最新的工作流实例和任务实例状态统计。
+
-## 近期研发计划
+* **工作流定义**: 通过拖拉拽创建和管理工作流,轻松构建和维护复杂的工作流。
+
-DolphinScheduler的工作计划:研发计划 ,其中 In Develop卡片下是正在研发的功能,TODO卡片是待做事项(包括 feature ideas)
+* **工作流树状图**: 抽象的树形结构可以更清晰的理解任务之间的关系
+
+
+* **数据源**: 管理支持多种外部数据源,为MySQL、PostgreSQL、Hive、Trino等,并提供统一的数据访问能力。
+
+
+* **监控**:实时查看master、worker和数据库的状态,包括服务器资源使用情况和负载情况,无需登录服务器即可快速进行健康检查。
+
+
+## 建议和报告 bugs
+
+根据 [这个步骤](https://github.com/apache/dolphinscheduler/issues/new/choose) 来报告你的 bug 或者提交建议。
## 参与贡献
-非常欢迎大家来参与贡献,贡献流程请参考:
-[[参与贡献](docs/docs/zh/contribute/join/contribute.md)]
-
-## 快速试用 Docker
-
-请参考官方文档: [快速试用 Docker 部署](https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/start/docker.html)
-
-## 快速试用 Kubernetes
-
-请参考官方文档: [快速试用 Kubernetes 部署](http://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/installation/kubernetes.html)
-
-## 如何构建
-
-```bash
-./mvnw clean install -Prelease
-```
-
-### 构建不同版本的 Zookeeper 依赖
-
-默认支持 Zookeeper Server 3.8.0。
-```bash
-# 默认 Zookeeper Client 3.8.0
-./mvnw clean install -Prelease
-# 构建支持 Zookeeper 3.4.6+
-./mvnw clean install -Prelease -Dzk-3.4
-```
-
-制品:
-
-```
-dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-bin.tar.gz: DolphinScheduler 二进制包
-dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-src.tar.gz: DolphinScheduler 源代码包
-```
-
-## 感谢
-
-Dolphin Scheduler使用了很多优秀的开源项目,比如google的guava、grpc,netty,quartz,以及apache的众多开源项目等等,
-正是由于站在这些开源项目的肩膀上,才有Dolphin Scheduler的诞生的可能。对此我们对使用的所有开源软件表示非常的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!
-
-## 获得帮助
-
-1. 提交 [issue](https://github.com/apache/dolphinscheduler/issues/new/choose)
-2. [加入slack群](https://s.apache.org/dolphinscheduler-slack) 并在频道 `#troubleshooting` 中提问
+社区欢迎大家贡献,请参考此页面了解更多:[如何贡献](docs/docs/zh/contribute/join/contribute.md),在[这里](https://github.com/apache/dolphinscheduler/contribute)可以找到good first issue
+如果你是首次贡献 dolphinscheduler。
## 社区
-1. 通过[该申请链接](https://s.apache.org/dolphinscheduler-slack)加入slack channel
-2. 关注[Apache Dolphin Scheduler的Twitter账号](https://twitter.com/dolphinschedule)获取实时动态
+欢迎通过以方式加入社区:
-## 版权
+- 加入 [DolphinScheduler Slack](https://s.apache.org/dolphinscheduler-slack)
+- 关注 [DolphinScheduler Twitter](https://twitter.com/dolphinschedule) 来获取最新消息
+- 订阅 DolphinScheduler 邮件列表, 用户订阅 users@dolphinscheduler.apache.org 开发者请订阅 dev@dolphinscheduler.apache.org
-请参考 [LICENSE](https://github.com/apache/dolphinscheduler/blob/dev/LICENSE) 文件.
+# Landscapes
+
+
+
+
+
+DolphinScheduler enriches the CNCF CLOUD NATIVE Landscape.
+
+
diff --git a/docs/docs/en/guide/installation/standalone.md b/docs/docs/en/guide/installation/standalone.md
index 98bb1f555a..79fb12f1c4 100644
--- a/docs/docs/en/guide/installation/standalone.md
+++ b/docs/docs/en/guide/installation/standalone.md
@@ -9,8 +9,8 @@ If you are a new hand and want to experience DolphinScheduler functions, we reco
## Preparation
-* JDK:download [JDK][jdk] (1.8+), install and configure environment variable `JAVA_HOME` and append `bin` dir (included in `JAVA_HOME`) to `PATH` variable. You can skip this step if it already exists in your environment.
-* Binary package: download the DolphinScheduler binary package at [download page](https://dolphinscheduler.apache.org/en-us/download/download.html).
+- JDK:download [JDK][jdk] (1.8+), install and configure environment variable `JAVA_HOME` and append `bin` dir (included in `JAVA_HOME`) to `PATH` variable. You can skip this step if it already exists in your environment.
+- Binary package: download the DolphinScheduler binary package at [download page](https://dolphinscheduler.apache.org/en-us/download/).
## Start DolphinScheduler Standalone Server
@@ -29,6 +29,8 @@ bash ./bin/dolphinscheduler-daemon.sh start standalone-server
Access address `http://localhost:12345/dolphinscheduler/ui` and login DolphinScheduler UI. The default username and password are **admin/dolphinscheduler123**
+
+
### Start or Stop Server
The script `./bin/dolphinscheduler-daemon.sh`can be used not only quickly start standalone, but also to stop the service operation. The following are all the commands:
@@ -38,6 +40,8 @@ The script `./bin/dolphinscheduler-daemon.sh`can be used not only quickly start
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
# Stop Standalone Server
bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
+# Check Standalone Server status
+bash ./bin/dolphinscheduler-daemon.sh status standalone-server
```
> Note: Python gateway service is started along with the api-server, and if you do not want to start Python gateway
diff --git a/docs/docs/en/guide/start/docker.md b/docs/docs/en/guide/start/docker.md
index 9b30b09896..ae68c6f4e5 100644
--- a/docs/docs/en/guide/start/docker.md
+++ b/docs/docs/en/guide/start/docker.md
@@ -1,15 +1,15 @@
# Docker Quick Start
-There are three ways to start DolphinScheduler with Docker, [Standalone-server](#using-standalone-server-docker-image) is the way you
-find if you just want to start and try DolphinScheduler as a beginner. [docker-compose](#using-docker-compose-to-start-server) is for
-some who want to deploy DolphinScheduler in small or event middle scale workflows in their daily work.
-[Using exists postgresql and zookeeper server](#using-exists-postgresql-zookeeper) is for users who want to reuse the database
-or zookeeper server already exists.
+There are three ways to start DolphinScheduler with Docker
+
+- [Standalone-server](#using-standalone-server-docker-image) is the way you find if you just want to start and try DolphinScheduler as a beginner.
+- [docker-compose](#using-docker-compose-to-start-server) is for some who want to deploy DolphinScheduler in small or event middle scale workflows in their daily work.
+- [Using exists postgresql and zookeeper server](#using-exists-postgresql-zookeeper) is for users who want to reuse the database or zookeeper server already exists.
## Prepare
-- [Docker](https://docs.docker.com/engine/install/) 1.13.1+
-- [Docker Compose](https://docs.docker.com/compose/) 1.28.0+
+Need to install [Docker](https://docs.docker.com/engine/install/) 1.13.1+ and [Docker Compose](https://docs.docker.com/compose/) 1.28.0+
+before starting DolphinScheduler with Docker
## Start Server
@@ -37,15 +37,7 @@ be stored on disks after you change docker-compose configuration, and it is robu
DolphinScheduler in a long term. You have to install [docker-compose](https://docs.docker.com/compose/install/) before you
start servers.
-After installed docker-compose, it is recommended to modify some configurations for better experience. We highly recommended
-modify docker-compose's free memory up to 4 GB.
-
-- Mac:Click `Docker Desktop -> Preferences -> Resources -> Memory` modified it
-- Windows Docker Desktop:
- - Hyper-V mode: Click `Docker Desktop -> Settings -> Resources -> Memory` modified it
- - WSL 2 mode: see [WSL 2 utility VM](https://docs.microsoft.com/zh-cn/windows/wsl/wsl-config#configure-global-options-with-wslconfig) for more detail.
-
-After complete the configuration, we can get the `docker-compose.yaml` file from [download page](/en-us/download/download.html)
+After complete the installation, get the `docker-compose.yaml` file from [download page](https://dolphinscheduler.apache.org/en-us/download/)
form its source package, and make sure you get the right version. After download the package, you can run the commands as below.
```shell
@@ -63,7 +55,11 @@ $ docker-compose --profile schema up -d
$ docker-compose --profile all up -d
```
-> NOTES: It will not only start DolphinScheduler servers but also some others necessary services like PostgreSQL(with `root`
+> NOTES: After installed docker-compose, it is recommended to modify some configurations for better experience. We highly
+> recommended modify docker daemon memory up to 4 GB, see [How to assign more memory to docker container](https://stackoverflow.com/a/44533437/7152658)
+> for more detail.
+>
+> It will not only start DolphinScheduler servers but also some others necessary services like PostgreSQL(with `root`
> as user, `root` as password and `dolphinscheduler` as database) and ZooKeeper when starting with docker-compose.
### Using Exists PostgreSQL ZooKeeper
diff --git a/docs/docs/zh/guide/installation/standalone.md b/docs/docs/zh/guide/installation/standalone.md
index 8456b96505..d1c94dd09b 100644
--- a/docs/docs/zh/guide/installation/standalone.md
+++ b/docs/docs/zh/guide/installation/standalone.md
@@ -4,19 +4,19 @@ Standalone 仅适用于 DolphinScheduler 的快速体验.
如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用Standalone方式体检。如果你想体验更完整的功能,或者更大的任务量,推荐使用[伪集群部署](pseudo-cluster.md)。如果你是在生产中使用,推荐使用[集群部署](cluster.md)或者[kubernetes](kubernetes.md)
-> **_注意:_** Standalone仅建议20个以下工作流使用,因为其采用内存式的H2 Database, Zookeeper Testing Server,任务过多可能导致不稳定,并且如果重启或者停止standalone-server会导致内存中数据库里的数据清空。
-> 如果您要连接外部数据库,比如mysql或者postgresql,请看[配置数据库](#配置数据库)
+> **_注意:_** Standalone 仅建议 20 个以下工作流使用,因为其采用内存式的 H2 Database, Zookeeper Testing Server,任务过多可能导致不稳定,并且如果重启或者停止 standalone-server 会导致内存中数据库里的数据清空。
+> Standalone 支持元数据持久化,但是需要使用外部数据库,如 mysql 或者 postgresql,请看[配置数据库](#配置数据库)
## 前置准备工作
-* JDK:下载[JDK][jdk] (1.8+),安装并配置 `JAVA_HOME` 环境变量,并将其下的 `bin` 目录追加到 `PATH` 环境变量中。如果你的环境中已存在,可以跳过这步。
-* 二进制包:在[下载页面](https://dolphinscheduler.apache.org/zh-cn/download/download.html)下载 DolphinScheduler 二进制包
+- JDK:下载[JDK][jdk] (1.8+),安装并配置 `JAVA_HOME` 环境变量,并将其下的 `bin` 目录追加到 `PATH` 环境变量中。如果你的环境中已存在,可以跳过这步。
+- 二进制包:在[下载页面](https://dolphinscheduler.apache.org/en-us/download/)下载 DolphinScheduler 二进制包
## 启动 DolphinScheduler Standalone Server
### 解压并启动 DolphinScheduler
-二进制压缩包中有 standalone 启动的脚本,解压后即可快速启动。切换到有sudo权限的用户,运行脚本
+二进制压缩包中有 standalone 启动的脚本,解压后即可快速启动。
```shell
# 解压并运行 Standalone Server
@@ -29,6 +29,8 @@ bash ./bin/dolphinscheduler-daemon.sh start standalone-server
浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 **admin/dolphinscheduler123**
+
+
## 启停服务
脚本 `./bin/dolphinscheduler-daemon.sh` 除了可以快捷启动 standalone 外,还能停止服务运行,全部命令如下
@@ -38,6 +40,8 @@ bash ./bin/dolphinscheduler-daemon.sh start standalone-server
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
# 停止 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
+# 查看 Standalone Server 状态
+bash ./bin/dolphinscheduler-daemon.sh status standalone-server
```
[jdk]: https://www.oracle.com/technetwork/java/javase/downloads/index.html
@@ -45,4 +49,4 @@ bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
## 配置数据库
Standalone server 使用 H2 数据库作为其元数据存储数据,这是为了上手简单,用户在启动服务器之前不需要启动数据库。但是如果用户想将元数据库存储在
-MySQL 或 PostgreSQL 等其他数据库中,他们必须更改一些配置。请参考 [数据源配置](../howto/datasource-setting.md) `Standalone 切换元数据库` 创建并初始化数据库
+MySQL 或 PostgreSQL 等其他数据库中,必须更改一些配置。请参考 [数据源配置](../howto/datasource-setting.md) `Standalone 切换元数据库` 创建并初始化数据库
diff --git a/docs/docs/zh/guide/start/docker.md b/docs/docs/zh/guide/start/docker.md
index 3cce25e477..400ae98a0e 100644
--- a/docs/docs/zh/guide/start/docker.md
+++ b/docs/docs/zh/guide/start/docker.md
@@ -1,13 +1,14 @@
# Docker 快速使用教程
-本教程使用三种不同的方式通过 Docker 完成 DolphinScheduler 的部署,如果你想要快速体验,推荐使用 standalone-server 镜像,
-如果你想要体验比较完成的服务,推荐使用 docker-compose 启动服务。如果你已经有自己的数据库或者 Zookeeper 服务
-你想要沿用这些基础服务,你可以参考沿用已有的 PostgreSQL 和 ZooKeeper 服务完成部署。
+本教程使用三种不同的方式通过 Docker 完成 DolphinScheduler 的部署
+
+- 如果你想要快速体验,推荐使用 standalone-server 镜像,
+- 如果你想要体验比较完成的服务,推荐使用 docker-compose 启动服务.
+- 如果你已经有自己的数据库或者 Zookeeper 服务你想要沿用这些基础服务,你可以参考沿用已有的 PostgreSQL 和 ZooKeeper 服务完成部署。
## 前置条件
-- [Docker](https://docs.docker.com/engine/install/) 1.13.1+
-- [Docker Compose](https://docs.docker.com/compose/) 1.28.0+
+需要安装 [Docker](https://docs.docker.com/engine/install/) 1.13.1 以上版本,以及 [Docker Compose](https://docs.docker.com/compose/) 1.28.0 以上版本。
## 启动服务
@@ -32,22 +33,15 @@ $ docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p 25333:2
服务重启的时候保留元数据(如需要挂载到本地路径需要做指定)。他更健壮,能保证用户体验更加完整的 DolphinScheduler 服务。这种方式需要先安装
[docker-compose](https://docs.docker.com/compose/install/),链接适用于 Mac,Linux,Windows。
-安装完成 docker-compose 后我们需要修改部分配置以便能更好体验 DolphinScheduler 服务,我们需要配置不少于 4GB 的空闲内存:
-
-- Mac:点击 `Docker Desktop -> Preferences -> Resources -> Memory` 调整内存大小
-- Windows Docker Desktop:
- - Hyper-V 模式:点击 `Docker Desktop -> Settings -> Resources -> Memory` 调整内存大小
- - WSL 2 模式 模式:参考 [WSL 2 utility VM](https://docs.microsoft.com/zh-cn/windows/wsl/wsl-config#configure-global-options-with-wslconfig) 调整内存大小
-
-配置完成后我们需要获取 `docker-compose.yaml` 文件,通过[下载页面](/zh-cn/download/download.html)下载对应版本源码包可能是最快的方法,
-源码包对应的值为 "Total Source Code"。当下载完源码后就可以运行命令进行部署了。
+确保 docker-compose 顺利安装后,需要获取 `docker-compose.yaml` 文件,通过[下载页面](https://dolphinscheduler.apache.org/en-us/download/)
+下载对应版本源码包可能是最快的方法,当下载完源码后就可以运行命令进行部署了。
```shell
$ DOLPHINSCHEDULER_VERSION=3.1.5
$ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.tar.gz
# Mac Linux 用户
$ cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src/deploy/docker
-# Windows 用户, `cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src\deploy\docker`
+# Windows 用户, `cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src\deploy\docker`
# 如果需要初始化或者升级数据库结构,需要指定profile为schema
$ docker-compose --profile schema up -d
@@ -56,8 +50,10 @@ $ docker-compose --profile schema up -d
$ docker-compose --profile all up -d
```
-> 提醒:通过 docker-compose 启动服务时,除了会启动 DolphinScheduler 对应的服务外,还会启动必要依赖服务,如数据库 PostgreSQL(用户
-> `root`, 密码 `root`, 数据库 `dolphinscheduler`) 和 服务发现 ZooKeeper。
+> 提醒:安装完成 docker-compose 后需要修改部分配置以便能更好体验 DolphinScheduler 服务,我们推荐配置不少于 4GB 的空闲内存,详见
+> [How to assign more memory to docker container](https://stackoverflow.com/a/44533437/7152658).
+>
+> 通过 docker-compose 启动服务时,除了会启动 DolphinScheduler 对应的服务外,还会启动必要依赖服务,如数据库 PostgreSQL 和 服务发现 ZooKeeper
### 沿用已有的 PostgreSQL 和 ZooKeeper 服务
@@ -126,4 +122,4 @@ $ docker run -d --name dolphinscheduler-alert-server \
## 环境变量
可以通过环境变量来修改 Docker 运行的配置,我们在沿用已有的 PostgreSQL 和 ZooKeeper 服务中就通过环境变量修改了 Docker 的数据库配置和
-注册中心配置,关于全部的配置环境可以查看[全部的配置文件](https://github.com/apache/dolphinscheduler/blob/3.1.5/script/env/dolphinscheduler_env.sh) 了解
+注册中心配置,关于全部的配置环境可以查看对应组件的 application.yaml 文件了解。
diff --git a/images/en_US/data-source.png b/images/data-source.png
similarity index 100%
rename from images/en_US/data-source.png
rename to images/data-source.png
diff --git a/images/en_US/dag.png b/images/en_US/dag.png
deleted file mode 100644
index 4876960f47b996139e848c198db969b8e5fbcd02..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 83114
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