【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

论如何三句代码跑起 Davinci

  • 2020-02-11
  • 本文字数:6246 字

    阅读完需:约 20 分钟

论如何三句代码跑起Davinci

导读:之前喜欢 Davinci 的小伙伴儿在安装部署 Davinci 遇见问题时需要在 github issue 区等待技术人员的解答。现在不用怕啦,社区热心用户白菜君帮我们支持了 docker-composer 一键启动,以后只需寥寥几行代码,Davinci 就能舒畅的 run 起来了。还等什么,赶紧部署起来吧~




敲重点




Davinci Docker 原部署教程在这里:


https://github.com/edp963/davinci-docker


里面会不定时更新


记得收藏啊!!


下面是部署教程


一、环境要求


  • 安装 docker 后的 windows, linux, mac。

  • 检查是否有 docker-compose 命令(安装 docker 后默认会有,否则请手动安装)。


二、完整步骤


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>git clone https:``//github.com/edp963/davinci-docker.git<br>cd /d davinci-docker<br># docker build -t="edp963/davinci:v0.3.0-beta.4" .<br># 修改docker-compose.yml中邮箱配置docker-compose up -d<br></span>


完成!


你没看错!


就这么简单的完成了!


这样就可以安装部署 Davinci 了!


再也不用担心安装 Davinci 时遇到问题了!


然鹅,在部署 Docker 镜像过程中,我们的白菜君是怎么想的呢?让我们继续往下看:


内容会不定时更新哦,所以请大家收藏这个地址:


https://github.com/edp963/davinci-docker


三、Docker 支持环境变量列表


1553480511073059155.png


四、原理分析


制作 Davinci Docker 镜像




  1. Dockfile 分析


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>FROM java:``8``-jre<br>LABEL MAINTAINER=``"edp_support@groups.163.com"``<br># 从github上下载分发包并解压<br>RUN cd / \ <br>&& mkdir -p /opt/davinci\ <br>&& wget<br>https:``//github.com/edp963/davinci/releases/download/v0.3.0-beta.4/davinci-assembly_3.0.1-0.3.0-SNAPSHOT-dist-beta.4.zip<br>\ && unzip<br>davinci-assembly_3.0.1-0.3.0-SNAPSHOT-dist-beta.4.zip -d /opt/davinci<br># 将phantomjs打包到镜像<br>ADD phantomjs-2.1.1 /opt/phantomjs-2.1.1<br># 数据库初始化脚本,等待数据库就绪后启动spring boot<br>ADD bin/start.sh /opt/davinci/bin/start.sh<br># docker镜像是静态的,因此配置文件中的配置需要用环境变量传递,详见12factor# https://12factor.net/zh_cn/<br>ADD config/application.yml<br>/opt/davinci/config/application.yml<br># 预设davinci必备的两个环境变量ENV<br>DAVINCI3_HOME /opt/davinciENV PHANTOMJS_HOME /opt/phantomjs-2.1.1<br>WORKDIR /opt/davinci<br># 为什么使用CMD而不是ENTRYPOINT? 因为CMD可以在docker run的时候被替代# 在使用compose或K8S时,很有可能要在启动前执行其它脚本,而不是直接运行# start-server.sh# 在单独docker run且不附加任何命令时,以下命令默认执行<br>CMD ["./bin/start-server.sh"]<br>EXPOSE 8080<br></span>


start.sh


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>#!/bin/bash<br># 将sql脚本经过mysql8兼容处理后,写入/initdb目录# /initdb 目录是与mysql容器共享目录# mysql容器将在启动时执行 /docker-entrypoint-initdb.d 中的所有脚本<br>cd /opt/davinci/bin/mkdir /initdbcat<br>davinci.sql > /initdb/davinci.sqlsed -i ``'1i\SET<br>GLOBAL log_bin_trust_function_creators = 1;' /initdb/davinci.sql<br><br># 由于docker compose中启动顺序管理交给了容器自己# 详见<br>https:``//docs.docker.com/compose/startup-order/# 因此我们需要用curl探测mysql端口,当接受数据字节大于0时认为# 数据库可以连通,接下来我们执行davinci spring boot主程序set<br>-e<br>host="$1"shiftcmd="$@"<br>until [ $(curl -I -m 10 -o /dev/null -s -w %{size_download} $host) -gt 0 ]; do >&2 echo<br>"database is unavailable - sleeping" sleep 1done<br>source $cmd<br></span>


  1. 构建镜像


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>docker build -t=``"edp963/davinci:v0.3.0-beta.4" .<br></span>


  1. Docker Compose


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>version: ``'3.6'``services: davinci: <br>environment: - MYSQL_CONN=jdbc:mysql:``//mysql:3306/davinci0.3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true - DB_USER=root - DB_PWD=abc123123 - MAIL_HOST=smtp.163.com - MAIL_PORT=465 - MAIL_STMP_SSL=true - MAIL_USER=xxxxxx@163.com - MAIL_PWD=xxxxxxxx - MAIL_NICKNAME=davinci image: "edp963/davinci:v0.3.0-beta.4" ports: <br>- 58080:8080 # 等待mysql就绪后再启动spring boot主程序 command: ["./bin/start.sh",<br>"mysql:3306", "--", "start-server.sh"] restart: always volumes: - davinci_logs:/opt/davinci/logs - davinci_userfiles:/opt/davinci/userfiles - davinci_initdb:/initdb #共享给mysql作数据初始化 mysql: image: mysql:8 restart: always environment: - MYSQL_ROOT_PASSWORD=abc123123 - MYSQL_DATABASE=davinci0.3 volumes: - mysql_data:/var/lib/mysql # 初始化脚本源自davinic容器的initdb目录 - davinci_initdb:/docker-entrypoint-initdb.d:ro <br>volumes: davinci_userfiles: davinci_logs: <br>davinci_initdb: mysql_data:<br></span>


小提示:docker-compose.yml 环境变量配置 K=V 中不能出现空格,V 也不能用双引号包裹


  1. Docker Compose 启动


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>docker-compose up -d<br></span>


  1. 仅 Docker 启动(使用外部数据库)


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>docker run -p ``58081``:``8080 -e MYSQL_CONN=``"jdbc:mysql://yourmysqlserver:3306/davinci0.3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true" \<br>-e DB_USER=``"root" -e DB_PWD=``"pwd" \<br>-e MAIL_HOST=``"smtp.163.com"``<br>-e MAIL_PORT=``"465"``<br>-e MAIL_STMP_SSL=``"true" \<br>-e MAIL_USER=``"xxxxxx@163.com" <br>-e MAIL_PWD=``"xxxxxxx" \<br>-e MAIL_NICKNAME=``"davinci_sys" \<br>edp963/davinci:v0.``3.0``-beta.``4``<br></span>


  1. 使用更丰富的配置


可以在宿主中添加一些配置文件,查看 davinci 配置:https://github.com/edp963/davinci/tree/master/config


然后 docker run 时将其挂载到 /opt/davinci/config


col 1col 2
1<span style=``"font-family: 黑体, SimHei;"``>docker run -p ``58081``:``8080 -e MYSQL_CONN=``"jdbc:mysql://yourmysqlserver:3306/davinci0.3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true" \<br>-e DB_USER=``"root" -e DB_PWD=``"pwd" \<br>-e MAIL_HOST=``"smtp.163.com" -e MAIL_PORT=``"465" -e MAIL_STMP_SSL=``"true" \<br>-e MAIL_USER=``"xxxxxx@163.com" -e MAIL_PWD=``"xxxxxxx" \<br>-e MAIL_NICKNAME=``"davinci_sys" \<br>-v/etc/davinci:/opt/davinci/config \<br>edp963/davinci:v0.``3.0``-beta.``4``</span>


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/226


2020-02-11 20:22555

评论

发布
暂无评论
发现更多内容

阿里云斩获2022全球分布式云大会两项大奖

云布道师

阿里云

华为云桌面携手伙伴共建繁荣生态

清欢科技

华为云大数据BI,助力企业挖掘信息数据潜在价值

科技说

数据也能开口说话?这次汇报,老板疯狂给我点赞

图灵教育

数据分析 可视化 图表

为什么 APISIX Ingress 是比 Traefik 更好的选择?

API7.ai 技术团队

云原生 APISIX Ingress Controller Kubernetes Serverless

Go Ubuntu 安装 gvm:Go 版本管理工具

非晓为骁

Go ubuntu 版本管理工具 gvm

从全球顶级数据库大会 SIGMOD 看数据库发展趋势

NebulaGraph

数据库 图数据库 技术演变

认证鉴权对于 API 网关的重要性

API7.ai 技术团队

认证授权 API Gateway APISIX 网关

华为云桌面,助力企业灵活、高效办公

清欢科技

华为云大数据BI解决方案,助力企业实现数字化转型

科技说

库存积压营销差?不妨尝试华为云大数据BI

科技说

我们是如何构建自己的可观测性的

观测云

云计算 可观测性 云服务 观测云

智能勘探 | AIRIOT智慧油田管理解决方案

AIRIOT

物联网 智慧油田

当 Amazon Lambda 遇上 Apache APISIX 可以擦出什么火花?

API7.ai 技术团队

微服务 AWS API Gateway APISIX 网关

国产时序数据库TDengines学习调研及总结

李草凯

数据治理:数据集成架构的演进

用友BIP

教你用JavaScript实现鼠标特效

小院里的霍大侠

JavaScript 编程开发 初学者 入门实战

Android基础入门教程

智趣匠

android Android开发

Wallys/MIMO/Industrial-grade/2x 2 900M high powerRadio /902-928Mhz/AR9223/ AR9582/AR9531/AR9344/

Cindy-wallys

作业2:微信朋友圈的高性能复杂度

白杨

欧盟森林砍伐法规和合规性:使用 Dimitra 技术解决森林砍伐问题

股市老人

数据也能开口说话?这次汇报,老板疯狂给我点赞

图灵社区

数据分析 可视化 图表

基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等

JackJiang

Netty 即时通讯 即时通讯IM SSL/TLS

2022年了,苹果还不能长截图,华为的指关节截屏了解一下~

Geek_2d6073

什么样的技术,能让黄河开口说话?

白洞计划

哈啰出行高质量故障复盘法:“3+5+3”(附模板)

TakinTalks稳定性社区

用户红利终结,应用分发如何实现“全链路加速增长”?

最新动态

学习无代码开发工具有什么用?

间隔

微信小程序 无代码开发

未来智安XDR荣膺ISC 2022创新能力百强

未来智安XDR SEC

华为云桌面,数字化时代便捷、安全的办公选择

清欢科技

华为云桌面的安全,到底是怎么做到的?

清欢科技

论如何三句代码跑起Davinci_安全_汤波成_InfoQ精选文章