写点什么

论如何三句代码跑起 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:22820

评论

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

让ChatGPT手把手教我们学操作系统是一种怎样的体验?

Java全栈架构师

程序员 AI 后端 操作系统 计算机

智慧公厕解决方案,光明源方案揭秘

光明源智慧厕所

智慧城市

国内外低代码开发平台优劣势一览

YonBuilder低代码开发平台

靠近用户侧和数据,算网融合实现极致协同

阿里云CloudImagine

云计算 边缘计算 边缘云

YonTalk 大咖论道:YonBuilder 低代码开发平台能力解析

YonBuilder低代码开发平台

如何当个优秀的文档工程师?从 TC China 看技术文档工程师的自我修养

NebulaGraph

技术文档

你的留言,我们都收到了

OceanBase 数据库

数据库 oceanbase

卡奥斯赋能发展引擎,“工赋山东”再加“数”!

Openlab_cosmoplat

工业互联网 开源社区

不会PS没关系,AI拼图技术已能以假乱真|斯坦福研究

Openlab_cosmoplat

开源社区 ps

Double-check 技术:Golang 中多线程编程的必备技能

Jack

golang 设计模式

ChatGPT已能操控机器人,工程师连代码都不用写,网友:微软在搞天网?

Openlab_cosmoplat

人工智能 机器人 开源社区 ChatGPT

焱融科技荣获爱分析·信创产品及服务创新奖

焱融科技

#高性能 #分布式文件存储 #文件存储 #全闪存储 #容器存储

OpenCloudOS 9.0 发布:首个全自研服务器操作系统

OpenCloudOS

Linux

寻找“乘风破浪”的出海创新势力丨 2023出海企业创新价值榜报名启动

创业邦

亮相数字化转型大会!卡奥斯助力两化融合工业转型!

Openlab_cosmoplat

工业互联网 开源社区

格式塔理论

Data 探险实验室

可视化 大屏可视化 可视化看板 大屏布局 仪表板

The Foundry Modo 16 Mac版(专业的三维建模软件)

Rose

mac软件下载 Foundry Modo 三维建模软件

前端培训学习的就业前景怎么样

小谷哥

GitHub开源3小时,一直被哄抢!800页全彩《微服务架构深度解析》

Java 架构 微服务

开心档之MySQL WHERE 子句

开心档之MySQL 序列使用

百度荣获 CCIA数据安全工作委员会突出贡献奖

百度安全

Feast on Amazon 解决方案

亚马逊云科技 (Amazon Web Services)

人工智能

软件测试/测试开发丨做web自动化时,定位元素常用方法有哪些?

测试人

软件测试 自动化测试 测试开发 Web自动化测试

迪士尼的“元宇宙梦”醒了

Openlab_cosmoplat

开源社区 元宇宙

苹果电脑删除磁盘分区及双系统分区的办法

互联网搬砖工作者

联想Yoga Book 9i双屏笔记本发布:两块13寸2.8K触摸屏

极客天地

分享交流丨九科信息董事&产品VP傅恺受邀出席第三届ISIG中国产业智能大会并分享企业优秀案例

九科Ninetech

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