继昨日发布第一个 [官方 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

配置databaseTYPE, 默认值 postgresql

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DATABASE_DRIVER

配置databaseDRIVER, 默认值 org.postgresql.Driver

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DATABASE_HOST

配置databaseHOST, 默认值 127.0.0.1

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DATABASE_PORT

配置databasePORT, 默认值 5432

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DATABASE_USERNAME

配置databaseUSERNAME, 默认值 root

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DATABASE_PASSWORD

配置databasePASSWORD, 默认值 root

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DATABASE_DATABASE

配置databaseDATABASE, 默认值 dolphinscheduler

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DATABASE_PARAMS

配置databasePARAMS, 默认值 characterEncoding=utf8

注意: 当运行dolphinschedulermaster-serverworker-serverapi-serveralert-server这些服务时,必须指定这个环境变量,以便于你更好的搭建分布式服务。

DOLPHINSCHEDULER_ENV_PATH

任务执行时的环境变量配置文件, 默认值 /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh

DOLPHINSCHEDULER_DATA_BASEDIR_PATH

用户数据目录, 用户自己配置, 请确保这个目录存在并且用户读写权限, 默认值 /tmp/dolphinscheduler

ZOOKEEPER_QUORUM

配置master-serverworker-serverrZookeeper地址, 默认值 127.0.0.1:2181

注意: 当运行dolphinschedulermaster-serverworker-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-serverXLS文件的存储路径,默认值 /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 镜像

如何构建 Apache DolphinScheduler 的 Docker 镜像的更多相关文章

  1. 在sun jdk 8镜像基础上构建maven 3的docker镜像

    2019独角兽企业重金招聘Python工程师标准>>> 在https://my.oschina.net/ytqvip/blog/1595054文章的sun jdk 8镜像基础上构建m ...

  2. 使用Visual Studio 2017构建.Net Core的Docker镜像

    1 Docker  镜像优化 微软在为开发人员生成 Docker 镜像时,提供以下三种主要方案: 用于开发 .NET Core 应用的 镜像 用于构建生成 .NET Core 应用的 镜像 用于运行 ...

  3. # 构建以及运行Springboot Docker镜像时的变量传递

    Docker可以把我们的运行环境打包,然后我们只要run就可以了.大部分hello world都是这么写的.但都缺少了实际应用环节.以springboot为例,hello world的Dockerfi ...

  4. Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署

    使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...

  5. 利用构建缓存机制缩短Docker镜像构建时间

    在使用Docker部署PHP或者node.js应用时,常用的方法是将代码和环境镜像打包成一个镜像然后运行,一些云厂商提供了非常便捷的操作,只需要把我们的代码提交到VCS上,然后它们就会帮我们拉取代码并 ...

  6. Nodejs课堂笔记-第三课 构建一个nodejs的Docker镜像

    本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 因为一直做Linux有关的开发工作,所以不习惯在Windows平台编译和测试 ...

  7. apisix docker镜像构建及插件化开发

    高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...

  8. apisix网关-构建docker镜像构建及插件化开发

    高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...

  9. Jenkins教程(五)构建Java服务Docker镜像

    本文主旨 主要记录下如何使用Jenkins构建Java服务的Docker镜像,以及手动部署测试下 前期准备 已安装Jenkins 为jenkins用户添加到docker组内 本地装有maven,配置或 ...

随机推荐

  1. 万字+28张图带你探秘小而美的规则引擎框架LiteFlow

    大家好,今天给大家介绍一款轻量.快速.稳定可编排的组件式规则引擎框架LiteFlow. 一.LiteFlow的介绍 LiteFlow官方网站和代码仓库地址 官方网站:https://yomahub.c ...

  2. Python模块Ⅱ

    Python模块2 part3 模块的分类: 内置模块200种左右:python自带的模块,time os sys hashlib等 第三方模块6000种左右:需要pip install beauti ...

  3. ML第5周学习小结

    本周收获 总结一下本周学习内容: 1.学习了<深入浅出Pandas>的第五章:Pandas高级操作的两个内容 数据迭代 函数应用 我的博客链接: pandas:数据迭代.函数应用 2.&l ...

  4. Netty是什么,Netty为什么速度这么快,线程模型分析

    哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 书接上回,现在下着大雨看来是去 ...

  5. Codeforces Round #773 (Div. 2)

    这一场打的非常一般,不过把D想出来了(当然只剩10min没有写出来). A.Hard Way 题意:(很怪的题,我读题读半天)给你一个三角形(端点都在整数点上),问从x轴往上划线(不一定垂直)画不到的 ...

  6. MySQL锁(乐观锁、悲观锁、多粒度锁)

    锁 并发事务可能出现的情况: 读-读事务并发:此时是没有问题的,读操作不会对记录又任何影响. 写-写事务并发:并发事务相继对相同的记录做出改动,因为写-写并发可能会产生脏写的情况,但是没有一个隔离级别 ...

  7. 基于.NetCore开发博客项目 StarBlog - (11) 实现访问统计

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  8. django框架5

    内容概要 模板语法之过滤器(类似于内置函数) 模板语法之标签(类似于流程控制) 自定义过滤器.标签.inclusion_tag 模板的导入 模板的继承 注释语法补充 前期数据准备(测试环境搭建) al ...

  9. Jetpack架构组件学习(3)——Activity Results API使用

    原文地址:Jetpack架构组件学习(3)--Activity Results API使用 - Stars-One的杂货小窝 技术与时俱进,页面跳转传值一直使用的是startActivityForRe ...

  10. vue大型电商项目尚品汇(后台篇)day01

    开始我们后台篇的内容,前面处理了一些事情,去学校完成授位仪式,由校长授位合影,青春不留遗憾,然后还换了一个电脑,征战了四年的神船终于退役了,各种各样的小毛病是真的烦人. 现在正式开始后台篇的内容,做了 ...