写点什么

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

评论

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

机器学习算法:关联规则分析

Peter

Python 机器学习 算法

Pandas索引的操作

Peter

Python pandas

电脑硬件中最重要的部分是什么?

InfoQ IT百科

操作系统负责管理计算机系统的什么?

InfoQ IT百科

略谈企业信息化的规律

秋去冬来春未远

信息化规律

读《Software Engineering at Google》(12)

术子米德

架构师成长笔记

时序数据库市场漫谈

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

未来源码 | 吴恩达教授重磅演讲:Tips for using a data-centric AI approach

MobTech袤博科技

新闻速递 I MobTech通过中国信通院“安全专项评测”

MobTech袤博科技

在线YAML转XML工具

入门小站

工具

Flutter 一文搞定图片选择和图片上传

岛上码农

flutter ios开发 安卓开发 4月月更 跨平台开发

Robot OS系统架构设计

轻口味

android 架构 Robot 4月月更

读《Software Engineering at Google》(11)

术子米德

架构师成长笔记

2022年中国数字科技专题分析

易观分析

数字技术 数字科技

Java的wait()、notify()学习三部曲之一:JVM源码分析

程序员欣宸

Java JVM 4月月更

一个快速追踪密切接触者的开源脚本方案

冯骐

Python 数据分析 流调 密接 新冠疫情

模块四作业

HZ

架构实战营 #架构实战营

企评家为政府打造决策支撑平台

企评家

为什么我们需要做企业成长性评价分析?

企评家

未来可期,PlatoFarm的生态通证登录Bitmart等全球四大平台

BlockChain先知

Pandas+Numpy+Sklearn随机取数

Peter

Python pandas

读《Software Engineering at Google》(13)

术子米德

架构师成长笔记

东吴证券X袋鼠云:数据轻松可取、毫秒级反应能力,东吴证券做对了什么?

袋鼠云数栈

大数据

CSV Column Extract列提取

入门小站

工具

企评家企业大数据平台助力政府智能监管

企评家

数据中心碳中和之路,新华三如何全栈赋能?

脑极体

Minio基本使用与原理

神农写代码

微日记:那些看起来并不起眼的细节体验

龙国富

体验设计

在线YAML转XML工具

入门小站

工具

我国有哪些完全自研的电脑硬件?

InfoQ IT百科

深开鸿与亿晟科技签署合作协议,携手构建商显行业新生态

科技汇

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