导读:之前喜欢 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
更多内容推荐
开心档之 Bootstrap4 自定义表单
Bootstrap4 可以自定义一些表单的样式来替换浏览器默认的样式。
2023-02-21
Nexus3 常用功能备忘
将日常用到的nexus3功能和配置记录下来
2022-12-09
还在用 Jenkins?试试这款面向 DevOps 的自动化部署工具吧,贼带劲!
今天给大家推荐一款好用的CI/CD工具。
2022-12-10
Docker 搭建 Hadoop 集群教程。
搭建Hadoop集群是一个相对复杂的过程,涉及到多个步骤和配置。下面是一个基本的Docker搭建Hadoop集群的教程,供参考:
2023-11-19
蓝易云:docker 部署并配置 oracle12c 的 cdb 和 pdb 教程!
以下是使用Docker部署和配置Oracle 12c CDB(Container Database)和PDB(Pluggable Database)的简要教程:
2023-10-02
6. SELECT 进阶:指定聚合函数
2023-09-26
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
5. SELECT 进阶:指定简单列
2023-09-26
容器化部署四大优势简单说明 - 行云管家
容器化部署是一种将应用程序及其依赖项打包成容器的技术,该容器可以在不同的环境中运行,而无需修改应用程序本身。但大家对于容器化部署技术存在很多疑问,我们今天就先来了解其优势。
2023-06-06
NFT 艺术品交易所系统开发 [定制部署,1 周上线]
NFT艺术品交易所系统开发(定制部署,1周上线)
2023-09-24
23|实战项目(五):做一个类似 LensaAI 的梦幻照相馆
这一讲,我们会训练出一个能高度还原人像效果的LoRA模型,有了这个模型,你就能实现一个梦幻照相馆的项目。
2023-09-08
只需搞定 Docker,环境问题再也不是测开路上的『坑』
轻量级:因为docker不用虚拟化内核,直接共享宿主机的内核,所以节省了很多资源,在同样的资源下可以启动更多的软件,同时启动速度也更快
2022-09-08
强大好用的 shell:shell 命令
命令名称:就是语法中的“动词”,表达的是想要做的事情,例如创建用户、查看文件、重启系统等操作。
2023-11-13
如何在 SAP Business Application Studio 里创建 SAP UI5 应用并部署到 BTP 平台上
打开 SAP Business Application Studio,File-> New Project from Template,从模板里选择 SAP Fiori Application:
2022-10-20
华为云 GaussDB,如何给世界一个更优选择?
随着数字经济的快速发展,越来越多的企业和政府部门开始关注数字化转型,以提高效率、降低成本、提升竞争力。在这个过程中,数据库作为关键信息基础设施的核心组成部分,承载着企业和政府部门的核心业务数据,对于推动数字经济和实体经济的深度融合具有重要意
2023-06-08
CentOS7 离线安装 Zabbix5.0
各位运维的朋友们都有可能遇到过在公司内网环境下无法访问外网情况,无法访问外网yum源部署ZABBIX 对于rpm包依赖问题比较头疼。本文将会进行离线部署实战。同时大家也可以写成一份shell脚本直接离线安装一键部署就可以了。
2023-04-19
快速离线安装 MySql 数据库
主要内容:快速离线安装mysql 配置my.cnf、安全启动、获取密码、更新初始启动密码、设置开机启动、创建mysql数据库、创建用户。
2023-07-14
04|实战项目(一):用 LoRA 制作一个你自己的漫画故事
如果我们想要进一步展现自己的创意和想象力,比如创作漫画时让AI帮我们生成特定风格和特定人物,该怎么办呢?
2023-07-24
2. 镜像安全
2023-09-27
2.Docker client
2023-09-30
推荐阅读
2023 工作总结怎么写?保姆级的年终总结万能公式来了,助你一臂之力!
2023-12-08
【YashanDB 知识库】误配置 SYSTEM 级别的 STATISTICS_LEVEL 参数为 ALL 导致数据库性能下降
2024-12-17
7.2 配色的具体应用
2023-10-17
从零开始的 dbt 入门教程 (dbt-core 基础篇)
2023-12-01
uniapp 打包的 ipa 上架到 appstore 的傻瓜式教程
2023-11-24
第一个大模型程序:Hello GPT
2023-10-11
课程介绍
2023-10-11
电子书
大厂实战PPT下载
换一换 王辉 | 太平洋保险集团 数智研究院/首席架构师
李云 | 《全面效能》作者
路宁 | 研发效能领域知名专家
评论