写点什么

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

评论

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

千万别让老板知道,这套80%海报,是我用生成式 AI 设计的!

亚马逊云科技 (Amazon Web Services)

美国对苹果提起反垄断诉讼;周鸿祎:不转向 AI 手机的厂商会成下一个「诺基亚」丨 RTE 开发者日报 Vol.170

声网

低代码助力企业数智转型

不在线第一只蜗牛

低代码 数智转型

一个案例,看懂AI Agent厂商的商业落地路径

王吉伟频道

LLM 大语言模型 AI Agent AI智能体 RPA Agent

【教程】深入探究 JS代码混淆与加密技术

.NET Core 服务实现监控可观测性最佳实践

观测云

.net core

海信电视U8N Pro,用AI算尽 “每一粒沙”

脑极体

AI

使用gitlab+gitlab runner+k8s完成devops

了了

从0到1:企业官网小程序开发笔记(一)

CC同学

选择美国高防服务器出租,提升网络防御力

一只扑棱蛾子

美国高防服务器 高防服务器

策略分析轻松搞定!10款免费可视化模板助你提升分析效率!

彭宏豪95

在线白板 办公软件 效率软件 SWOT boardmix

头部银行 AI 落地实践|数据应用赋能经营管理闭环

Kyligence

热点!浅谈低代码到底是什么?

互联网工科生

深度解析大模型的关键特性与优势

木南曌

#大模型

众安保险AI代码助手DevPilot获奖,全面开源构筑技术新生态

ZA技术社区

专访天谋科技 CTO 乔嘉林:一个顶级开源项目背后,还需要淬炼多个“最后一公里”

Apache IoTDB

Penpad 生态资产 $PDD 即将LaunchPad ,一文读懂Season 2 规则

股市老人

Penpad的Season 2 规则解读,其生态资产 $PDD LaunchPad 在即

股市老人

Prompt进阶系列4:LangGPT(构建高性能Prompt实践指南)--结构化Prompt

汀丶人工智能

人工智能 Prompt工程

jackson对象带时间的转换报错,附带fastjson封装工具就填

光进

java‘

颠覆传统开发流程!「原型、设计、开发」仅需一个组件设计器就够了!

优秀

低代码 组件设计器

全球首个Open机器人诞生!当GPT模型有了“肉体”,不仅能听能写还可以干家务!

Finovy Cloud

AI Open AI

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