如何构建 Apache DolphinScheduler 的 Docker 镜像
继昨日发布第一个 [官方 Docker 镜像] 后,有几位小伙伴私信想自己进行编译,这里也将 Docker 的主要贡献者文禾同学整理的文档进行分享。以下是全文内容:
您能够在类 Unix 系统和 Windows 系统中构建一个 docker 镜像。
类 Unix 系统, 如下:
$ cd path/incubator-dolphinscheduler
$ sh ./docker/build/hooks/build
Windows系统, 如下:
c:\incubator-dolphinscheduler>.\docker\build\hooks\build.bat
如果你不理解这些脚本 ./docker/build/hooks/build ./docker/build/hooks/build.bat,请阅读里面的内容。
环境变量
DolphinScheduler 映像使用了几个容易遗漏的环境变量。虽然这些变量不是必须的,但是可以帮助你更容易配置镜像并根据你的需求定义相应的服务配置。
DATABASE_TYPE
配置database的TYPE, 默认值 postgresql。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DATABASE_DRIVER
配置database的DRIVER, 默认值 org.postgresql.Driver。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DATABASE_HOST
配置database的HOST, 默认值 127.0.0.1。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DATABASE_PORT
配置database的PORT, 默认值 5432。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DATABASE_USERNAME
配置database的USERNAME, 默认值 root。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DATABASE_PASSWORD
配置database的PASSWORD, 默认值 root。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DATABASE_DATABASE
配置database的DATABASE, 默认值 dolphinscheduler。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DATABASE_PARAMS
配置database的PARAMS, 默认值 characterEncoding=utf8。
注意: 当运行dolphinscheduler中master-server、worker-server、api-server、alert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
DOLPHINSCHEDULER_ENV_PATH
任务执行时的环境变量配置文件, 默认值 /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh。
DOLPHINSCHEDULER_DATA_BASEDIR_PATH
用户数据目录, 用户自己配置, 请确保这个目录存在并且用户读写权限, 默认值 /tmp/dolphinscheduler。
ZOOKEEPER_QUORUM
配置master-server和worker-serverr的Zookeeper地址, 默认值 127.0.0.1:2181。
注意: 当运行dolphinscheduler中master-server、worker-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。
MASTER_EXEC_THREADS
配置master-server中的执行线程数量,默认值 100。
MASTER_EXEC_TASK_NUM
配置master-server中的执行任务数量,默认值 20。
MASTER_HEARTBEAT_INTERVAL
配置master-server中的心跳交互时间,默认值 10。
MASTER_TASK_COMMIT_RETRYTIMES
配置master-server中的任务提交重试次数,默认值 5。
MASTER_TASK_COMMIT_INTERVAL
配置master-server中的任务提交交互时间,默认值 1000。
MASTER_MAX_CPULOAD_AVG
配置master-server中的CPU中的load average值,默认值 100。
MASTER_RESERVED_MEMORY
配置master-server的保留内存,默认值 0.1。
MASTER_LISTEN_PORT
配置master-server的端口,默认值 5678。
WORKER_EXEC_THREADS
配置worker-server中的执行线程数量,默认值 100。
WORKER_HEARTBEAT_INTERVAL
配置worker-server中的心跳交互时间,默认值 10。
WORKER_FETCH_TASK_NUM
配置worker-server中的获取任务的数量,默认值 3。
WORKER_MAX_CPULOAD_AVG
配置worker-server中的CPU中的最大load average值,默认值 100。
WORKER_RESERVED_MEMORY
配置worker-server的保留内存,默认值 0.1。
WORKER_WEIGHT
配置worker-server的权重,默认之100。
WORKER_LISTEN_PORT
配置worker-server的端口,默认值 1234。
WORKER_GROUP
配置worker-server的分组,默认值 default。
XLS_FILE_PATH
配置alert-server的XLS文件的存储路径,默认值 /tmp/xls。
MAIL_SERVER_HOST
配置alert-server的邮件服务地址,默认值 空。
MAIL_SERVER_PORT
配置alert-server的邮件服务端口,默认值 空。
MAIL_SENDER
配置alert-server的邮件发送人,默认值 空。
MAIL_USER=
配置alert-server的邮件服务用户名,默认值 空。
MAIL_PASSWD
配置alert-server的邮件服务用户密码,默认值 空。
MAIL_SMTP_STARTTLS_ENABLE
配置alert-server的邮件服务是否启用TLS,默认值 true。
MAIL_SMTP_SSL_ENABLE
配置alert-server的邮件服务是否启用SSL,默认值 false。
MAIL_SMTP_SSL_TRUST
配置alert-server的邮件服务SSL的信任地址,默认值 空。
ENTERPRISE_WECHAT_ENABLE
配置alert-server的邮件服务是否启用企业微信,默认值 false。
ENTERPRISE_WECHAT_CORP_ID
配置alert-server的邮件服务企业微信ID,默认值 空。
ENTERPRISE_WECHAT_SECRET
配置alert-server的邮件服务企业微信SECRET,默认值 空。
ENTERPRISE_WECHAT_AGENT_ID
配置alert-server的邮件服务企业微信AGENT_ID,默认值 空。
ENTERPRISE_WECHAT_USERS
配置alert-server的邮件服务企业微信USERS,默认值 空。
FRONTEND_API_SERVER_HOST
配置frontend的连接api-server的地址,默认值 127.0.0.1。
Note: 当单独运行api-server时,你应该指定api-server这个值。
FRONTEND_API_SERVER_PORT
配置frontend的连接api-server的端口,默认值 12345。
Note: 当单独运行api-server时,你应该指定api-server这个值。
初始化脚本
如果你想在编译的时候或者运行的时候附加一些其它的操作及新增一些环境变量,你可以在/root/start-init-conf.sh文件中进行修改,同时如果涉及到配置文件的修改,请在/opt/dolphinscheduler/conf/*.tpl中修改相应的配置文件
例如,在/root/start-init-conf.sh添加一个环境变量API_SERVER_PORT:
export API_SERVER_PORT=5555
当添加以上环境变量后,你应该在相应的模板文件/opt/dolphinscheduler/conf/application-api.properties.tpl中添加这个环境变量配置:
server.port=${API_SERVER_PORT}
/root/start-init-conf.sh将根据模板文件动态的生成配置文件:
echo "generate app config"
ls ${DOLPHINSCHEDULER_HOME}/conf/ | grep ".tpl" | while read line; do
eval "cat << EOF
$(cat ${DOLPHINSCHEDULER_HOME}/conf/${line})
EOF
" > ${DOLPHINSCHEDULER_HOME}/conf/${line%.*}
done
echo "generate nginx config"
sed -i "s/FRONTEND_API_SERVER_HOST/${FRONTEND_API_SERVER_HOST}/g" /etc/nginx/conf.d/dolphinscheduler.conf
sed -i "s/FRONTEND_API_SERVER_PORT/${FRONTEND_API_SERVER_PORT}/g" /etc/nginx/conf.d/dolphinscheduler.conf
相关阅读:
如何构建 Apache DolphinScheduler 的 Docker 镜像的更多相关文章
- 在sun jdk 8镜像基础上构建maven 3的docker镜像
2019独角兽企业重金招聘Python工程师标准>>> 在https://my.oschina.net/ytqvip/blog/1595054文章的sun jdk 8镜像基础上构建m ...
- 使用Visual Studio 2017构建.Net Core的Docker镜像
1 Docker 镜像优化 微软在为开发人员生成 Docker 镜像时,提供以下三种主要方案: 用于开发 .NET Core 应用的 镜像 用于构建生成 .NET Core 应用的 镜像 用于运行 ...
- # 构建以及运行Springboot Docker镜像时的变量传递
Docker可以把我们的运行环境打包,然后我们只要run就可以了.大部分hello world都是这么写的.但都缺少了实际应用环节.以springboot为例,hello world的Dockerfi ...
- Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署
使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...
- 利用构建缓存机制缩短Docker镜像构建时间
在使用Docker部署PHP或者node.js应用时,常用的方法是将代码和环境镜像打包成一个镜像然后运行,一些云厂商提供了非常便捷的操作,只需要把我们的代码提交到VCS上,然后它们就会帮我们拉取代码并 ...
- Nodejs课堂笔记-第三课 构建一个nodejs的Docker镜像
本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 因为一直做Linux有关的开发工作,所以不习惯在Windows平台编译和测试 ...
- apisix docker镜像构建及插件化开发
高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...
- apisix网关-构建docker镜像构建及插件化开发
高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...
- Jenkins教程(五)构建Java服务Docker镜像
本文主旨 主要记录下如何使用Jenkins构建Java服务的Docker镜像,以及手动部署测试下 前期准备 已安装Jenkins 为jenkins用户添加到docker组内 本地装有maven,配置或 ...
随机推荐
- Abp Vnext源码解析系列文章01---EventBus
一.简介 BP vNext 封装了两种事件总线结构,第一种是 ABP vNext 自己实现的本地事件总线,这种事件总线无法跨项目发布和订阅.第二种则是分布式事件总线,ABP vNext 自己封装了一个 ...
- 多态——JavaSE基础
多态 同一个方法可以根据对象的不同采取不同的动作 一个对象的实际类型是确定的,但可以指向对象的引用类型有很多 基本条件: 有继承关系 子类重写父类方法 父类引用指向子类对象Father f1 = ne ...
- java基础题(3)
5.面向对象 5.1封装 5.1.1修改Data类的定义 描述 现有一个Data类,内部定义了属性x和y,在main方法中实例化了Data类,并计算了data对象中x和y的和.但是,Data类的定义存 ...
- Makefile基础语法
Makefile的作用 如果没有Makefile,每次修改源代码后,如果要重新编译代码,都要输入编译命令,当源代码很多时,效率很底下. 基本格式 target: componsnts TAB rule ...
- stm32f103ve+BH1750使用教程+oled(HAL库)
1.硬件:BH1750模块+oled 2.代码:BH1750是标准的iic协议的外设,我这里单独有iic的文件,之后想要实现多个设备共用一个iic. BH1750.c 1 #include " ...
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
前言 安装了mysq数据库,最终时为了实现在一个树莓派上实现多用户多进程操作的同步问题,避免数据并发出现一些错误,本篇安装了远程服务并且讲述了使用Qt进行悲观锁for update操作,命令行进行 ...
- springboot available: expected at least 1 bean which qualifies as autowire candidate奇葩问题
Exception encountered during context initialization - cancelling refresh attempt: org.springframewor ...
- 【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构
redis 是使用 C 语言编写的,但是 C 语言是没有字典这个数据结构的,因此 C 语言自己使用结构体来自定义一个字典结构 typedef struct redisDb src\server.h 中 ...
- 零基础学Java(3)运算符
运算符 运算符用于连接值.Java提供了一组丰富的算术和逻辑运算符以及数学函数. 算术运算符 在Java中,使用算术运算符+.-.*./表示加.减.乘.除运算.当参与/运算的两个操作数都是整数时,表示 ...
- Collection集合概述和集合框架介绍avi
集合概述 在前面基础班我们已经学习过并使用过集合ArrayList<E> ,那么集合到底是什么呢?· ~集合︰集合是java中提供的一种容器,可以用来存储多个数据集合和数组既然都是容器,它 ...