
导读:之前喜欢 Davinci 的小伙伴儿在安装部署 Davinci 遇见问题时需要在 github issue 区等待技术人员的解答。现在不用怕啦,社区热心用户白菜君帮我们支持了 docker-composer 一键启动,以后只需寥寥几行代码,Davinci 就能舒畅的 run 起来了。还等什么,赶紧部署起来吧~
敲重点
Davinci Docker 原部署教程在这里:
https://github.com/edp963/davinci-docker
里面会不定时更新
记得收藏啊!!
下面是部署教程:
一、环境要求
安装 docker 后的 windows, linux, mac。
检查是否有 docker-compose 命令(安装 docker 后默认会有,否则请手动安装)。
二、完整步骤
col 1 | col 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 支持环境变量列表

四、原理分析
制作 Davinci Docker 镜像
Dockfile 分析
col 1 | col 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 1 | col 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> |
构建镜像
col 1 | col 2 |
---|---|
1 | <span style=``"font-family: 黑体, SimHei;"``>docker build -t=``"edp963/davinci:v0.3.0-beta.4" .<br></span> |
Docker Compose
col 1 | col 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 也不能用双引号包裹
Docker Compose 启动
col 1 | col 2 |
---|---|
1 | <span style=``"font-family: 黑体, SimHei;"``>docker-compose up -d<br></span> |
仅 Docker 启动(使用外部数据库)
col 1 | col 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> |
使用更丰富的配置
可以在宿主中添加一些配置文件,查看 davinci 配置:https://github.com/edp963/davinci/tree/master/config
然后 docker run 时将其挂载到 /opt/davinci/config
col 1 | col 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
更多内容推荐
分布式理论之 CAP 理论
在某种角度下,同一组操作中通过不同的操作步骤会话操作数据库,就可能出现分布式事务的问题,其中CAP理论和Base理论就是分布式事务问题的理论依据。
2021-12-07
6. SELECT 进阶:指定聚合函数
2023-09-26
2. 镜像安全
2023-09-27
2023-01-05:konradkleine/docker-registry-frontend 是 registry 的 web 界面工具之一。请问部署在 k3s 中,yaml 如何写?
2023-01-05:konradkleine/docker-registry-frontend是registry的web界面工具之一。请问部署在k3s中,yaml如何写?
2023-01-05
Nexus3 常用功能备忘
将日常用到的nexus3功能和配置记录下来
2022-12-09
只需搞定 Docker,环境问题再也不是测开路上的『坑』
轻量级:因为docker不用虚拟化内核,直接共享宿主机的内核,所以节省了很多资源,在同样的资源下可以启动更多的软件,同时启动速度也更快
2022-09-08
群晖(Synology)NAS 后台安装 Docker 后配置 Mariadb / MySQL
如果你已经有一台 群晖(Synology)NAS 的话,你可以通过在 NAS 的后台安装 Docker ,然后再安装 MySQL 的镜像。
2022-03-04
2.Docker client
2023-09-30
如何在 SAP Business Application Studio 里创建 SAP UI5 应用并部署到 BTP 平台上
打开 SAP Business Application Studio,File-> New Project from Template,从模板里选择 SAP Fiori Application:
2022-10-20
04|实战项目(一):用 LoRA 制作一个你自己的漫画故事
如果我们想要进一步展现自己的创意和想象力,比如创作漫画时让AI帮我们生成特定风格和特定人物,该怎么办呢?
2023-07-24
不用加盟费也能加盟自助洗车吗?
不用加盟费也能加盟自助洗车吗?是真的,现在国内自助洗车的品牌也有很多家,大部分加盟都是没有加盟费的,像车白兔自助洗车就是其中之一,加盟是免费的。但是对于自助洗车机这部分是要收费的,也就是说加盟不要钱,购买机器设备的钱还是要的。
2022-04-24
轻盈潇洒卓然不群,敏捷编辑器 Sublime text 4 中文配置 Python3 开发运行代码环境 (Win11+M1 mac)
是的,轻便优雅,不是所有人都喜欢披盔戴甲,重装上阵。如果你偏爱轻灵机巧,编写代码恰如春日双燕飞舞柳间,高低左右,回转如意,那么Sublime text 4会是你的最佳选择。
2022-04-01
linux 驱动开发 _ 文件系统本地挂载
介绍Linux开发根文件系统挂载、NFS文件系统配置,UBOOT环境变量配置,完成文件系统启动,数码相册功能。
2022-06-04
5. SELECT 进阶:指定简单列
2023-09-26
centos7 的启动流程(systemctl)
chkconfig sshd –list ==> ls /etc/systemd/system/*.wants/sshd.service
2022-05-05
23|实战项目(五):做一个类似 LensaAI 的梦幻照相馆
这一讲,我们会训练出一个能高度还原人像效果的LoRA模型,有了这个模型,你就能实现一个梦幻照相馆的项目。
2023-09-08
容器化部署四大优势简单说明 - 行云管家
容器化部署是一种将应用程序及其依赖项打包成容器的技术,该容器可以在不同的环境中运行,而无需修改应用程序本身。但大家对于容器化部署技术存在很多疑问,我们今天就先来了解其优势。
2023-06-06
CentOS7 离线安装 Zabbix5.0
各位运维的朋友们都有可能遇到过在公司内网环境下无法访问外网情况,无法访问外网yum源部署ZABBIX 对于rpm包依赖问题比较头疼。本文将会进行离线部署实战。同时大家也可以写成一份shell脚本直接离线安装一键部署就可以了。
2023-04-19
华为云 GaussDB,如何给世界一个更优选择?
随着数字经济的快速发展,越来越多的企业和政府部门开始关注数字化转型,以提高效率、降低成本、提升竞争力。在这个过程中,数据库作为关键信息基础设施的核心组成部分,承载着企业和政府部门的核心业务数据,对于推动数字经济和实体经济的深度融合具有重要意
2023-06-08
【docker 总结】第六篇 - DockerCompose
compose 译为:组合,它可以将多个容器组合到一起;
2021-12-18
推荐阅读
第一个大模型程序:Hello GPT
2023-10-11
强大好用的 shell:shell 命令
2023-11-13
快速离线安装 MySql 数据库
2023-07-14
课程介绍
2023-10-11
【YashanDB 知识库】误配置 SYSTEM 级别的 STATISTICS_LEVEL 参数为 ALL 导致数据库性能下降
2024-12-17
7.2 配色的具体应用
2023-10-17
2023 工作总结怎么写?保姆级的年终总结万能公式来了,助你一臂之力!
2023-12-08
电子书

大厂实战PPT下载
换一换 
刘志保 | OPPO 移动研发平台负责人
王赞 | 金山办公 研发副总监
William Yang | HashiCorp 资深解决方案工程师
评论