宜信开源|Davinci一键部署:如何三句代码跑起Davinci

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

敲重点

Davinci Docker原部署教程在这里:

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

里面会不定时更新

记得收藏啊!!

下面是部署教程:

一、环境要求

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

二、完整步骤

<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支持环境变量列表

四、原理分析

制作Davinci Docker镜像

1、Dockfile分析

<span style="font-family: 黑体, SimHei;">FROM java:8-jre<br>LABEL MAINTAINER="[email protected]"<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

<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="[email protected]"<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>

2、构建镜像

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

3、Docker Compose

<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      - [email protected]      - 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也不能用双引号包裹

4、Docker Compose启动

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

5、仅Docker启动(使用外部数据库)

<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="[email protected]"  <br>-e MAIL_PWD="xxxxxxx" \<br>-e MAIL_NICKNAME="davinci_sys" \<br>edp963/davinci:v0.3.0-beta.4<br></span>

6、使用更丰富的配置

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

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

<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="[email protected]"  -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<br></span>

作者:汤波成
来源:宜信技术学院

原文地址:https://blog.51cto.com/14159827/2386408

时间: 2024-08-28 01:04:58

宜信开源|Davinci一键部署:如何三句代码跑起Davinci的相关文章

宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程

一.分布式任务调度的背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.我们常常需要一些任务调度系统来帮助解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此背景下,很多原先的任务调度平台已经不能满足业务系统的需求,于是出现了一些基于分布式的任务调度平台. 1.1 分布式任务调度的演进 在实际业务开发过程中,很多时候我们无可避免地需要使用一些定时任务来解决问题.通常我们会有多种解决方案:使用 Crontab 或 SpringCron (当然这种情况可能机器

宜信开源|UAV心跳机制与容器、进程数据采集

服务心跳机制主要用于确认服务的存活状态,UAVStack的心跳数据还负责上报节点的容器及进程监控数据,支持在前端实时查看应用容器和进程的运行状态,并根据这些数据对容器和进程做出预警. 一.背景 在微服务架构中,服务心跳是一个简单但非常重要的机制,用于确认微服务的存活状态.UAVStack中的心跳是一个Http请求,MonitorAgent(以下简称MA)通过定时向HealthManager(以下简称HM)发送一个带有特定报文格式的Http请求完成一次心跳的发送过程.心跳报文含有发送时的时间戳,用

Android三句代码使用沉浸式状态栏

用过android手机的人都知道android使用app的时候屏幕上方的状态栏都是黑色的,就算不是黑色的都与正在打开的app颜色不同.有一种灰常不搭调的感觉.~ 今天无意中看了一下关于沉浸式状态栏的资料~~作为强迫症重度患者怎能错过? 下面就开始使用沉浸式状态栏之旅: 代码未上图先行: 沉浸式: 非沉浸式: 嗯~虽然第二张图比较模糊,但是也可以想象第一张比较好看(- ̄▽ ̄)-. 那么接下来要说的就是如何实现第一张图的那样的效果: 首先要说明的是以下方法只适合android4.4或以上的系统 an

开源|宜信开源专注业务逻辑的轻量级服务框架nextsystem4

宜信于2019年3月29日正式开源nextsystem4(以下简称"NS4")系列模块. 此次开源的NS4系列模块是围绕当前支付系统笨重.代码耦合度高.维护成本高而产生的分布式业务系统解决方案.NS4系列框架允许创建复杂的流程/业务流,对于业务服务节点的实现可串联,可分布式.其精简.轻量,实现了"脱容器"(不依赖tomcat.jetty等容器)独立运行.NS4系列框架的设计理念是将业务和逻辑进行分离,开发人员只需通过简单的配置和业务实现就可以实现逻辑复杂.性能高效.

宜信开源微服务任务调度平台(SIA-TASK)

背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.常常需要一些任务调度系统帮助开发者解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此的背景下,很多原先的任务调度平台已经不能满足业务系统的需求.于是出现了一些基于分布式的任务调度平台.这些平台各有其特点,但各有不足之处,比如不支持任务编排.与业务高耦合.不支持跨平台等问题.非常不符合新一代微服务架构的需求,因此宜信公司开发了微服务任务调度平台(SIA-TASK). SIA是宜信公司基础开发平台Simpl

C#使用读写锁三句代码简单解决多线程并发写入文件时提示“文件正在由另一进程使用,因此该进程无法访问此文件”的问题

在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件. 选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉,问题就有可能出现了,因为同一个文件并不允许多个线程同时写入,否则会提示“文件正在由另一进程使用,因此该进程无法访问此文件”. 这是文件的并发写入问题,就需要用到线程同步.而微软也给进程同步提供了一些相关的类可以达到这样的目的,本文使用到的 System.Threadin

wex5 教程之 图文讲解 Cloudx5一键部署

视频教程地址:http://v.youku.com/v_show/id_XMTc3OTExNTUwNA==.html 效果预览: 一键部署cloudx5三要领 1.数据源命名为x5 2.数据库命名为x5 3.数据库初始化语句sql的生成与上传 工具栏下,选择导出数据库脚本 注意事项: 1.数据库与表的创建必段选择.否则不能创建数据库与表. 2.数据选项含义依次为:无数据(即空表),插入与删除,插入,忽略插入(不允许插入数                              据),覆盖数据.

【G】开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析

G.系列导航 [G]开源的分布式部署解决方案 - 预告篇 [G]开源的分布式部署解决方案(一) - 开篇 [G]开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的 [G]开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析 抱歉 首先我先说声抱歉,因为上一篇结尾预告第三篇本该是“部署项目管理”,那为什么变成本篇呢? 请容我解释一下,在预告篇到现在为止,经常会有人问我这个项目到底是干什么的.或许之前写的比较粗糙.那我相信目前定稿后的功能概览图应该会给大家一个比较清晰的认识.

宜信敏捷数据中台建设实践|分享实录

内容来源:宜信技术学院第2期技术沙龙-线上直播|宜信敏捷数据中台建设实践 分享嘉宾:宜信数据中台平台团队负责人 卢山巍 导读:宜信于2017年推出了一系列大数据开源工具,包括大家熟悉的DBus.Wormhole.Moonbox.Davinci等,在技术社区内得到了广泛关注和好评.这些工具是如何在宜信内部应用的?它们和宜信数据中台是怎样的关系?又是如何驱动各种日常数据业务场景的? 本次分享对这些问题进行了回答,同时重点分享了宜信敏捷数据中台的设计.架构以及应用场景,提出一种敏捷数据中台的建设思路,