Davinci一键部署 | 论如何三句代码跑起Davinci

20次阅读

共计 4075 个字符,预计需要花费 11 分钟才能阅读完成。

来源:敏捷大数据
作者:汤波成
宜信技术学院
 
导读:之前喜欢 Davinci 的小伙伴儿在安装部署 Davinci 遇见问题时需要在 github issue 区等待技术人员的解答。现在不用怕啦,社区热心用户白菜君帮我们支持了 docker-composer 一键启动,以后只需寥寥几行代码,Davinci 就能舒畅的 run 起来了。还等什么,赶紧部署起来吧~
敲重点
Davinci Docker 原部署教程在这里:
https://github.com/edp963/dav…
里面会不定时更新
记得收藏啊!!
下面是部署教程:
一、环境要求
安装 docker 后的 windows, linux, mac。
检查是否有 docker-compose 命令(安装 docker 后默认会有,否则请手动安装)。
二、完整步骤
git clone https://github.com/edp963/davinci-docker.git
cd /d davinci-docker
# docker build -t=”edp963/davinci:v0.3.0-beta.4″ .
# 修改 docker-compose.yml 中邮箱配置 docker-compose up -d 复制代码
完成!
你没看错!
就这么简单的完成了!
这样就可以安装部署 Davinci 了!
再也不用担心安装 Davinci 时遇到问题了!
然鹅,在部署 Docker 镜像过程中,我们的白菜君是怎么想的呢?让我们继续往下看:
内容会不定时更新哦,所以请大家收藏这个地址:
https://github.com/edp963/dav…
三、Docker 支持环境变量列表

四、原理分析
制作 Davinci Docker 镜像
1、Dockfile 分析
FROM java:8-jre
LABEL MAINTAINER=”edp_support@groups.163.com”
# 从 github 上下载分发包并解压
RUN cd / \
&& mkdir -p /opt/davinci\
&& wget
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
\ && unzip
davinci-assembly_3.0.1-0.3.0-SNAPSHOT-dist-beta.4.zip -d /opt/davinci
# 将 phantomjs 打包到镜像
ADD phantomjs-2.1.1 /opt/phantomjs-2.1.1
# 数据库初始化脚本,等待数据库就绪后启动 spring boot
ADD bin/start.sh /opt/davinci/bin/start.sh
# docker 镜像是静态的,因此配置文件中的配置需要用环境变量传递,详见 12factor# https://12factor.net/zh_cn/
ADD config/application.yml
/opt/davinci/config/application.yml
# 预设 davinci 必备的两个环境变量 ENV
DAVINCI3_HOME /opt/davinciENV PHANTOMJS_HOME /opt/phantomjs-2.1.1
WORKDIR /opt/davinci
# 为什么使用 CMD 而不是 ENTRYPOINT? 因为 CMD 可以在 docker run 的时候被替代# 在使用 compose 或 K8S 时,很有可能要在启动前执行其它脚本,而不是直接运行# start-server.sh# 在单独 docker run 且不附加任何命令时,以下命令默认执行
CMD [“./bin/start-server.sh”]
EXPOSE 8080 复制代码
start.sh
#!/bin/bash
# 将 sql 脚本经过 mysql8 兼容处理后,写入 /initdb 目录# /initdb 目录是与 mysql 容器共享目录# mysql 容器将在启动时执行 /docker-entrypoint-initdb.d 中的所有脚本
cd /opt/davinci/bin/mkdir /initdbcat
davinci.sql > /initdb/davinci.sqlsed -i ‘1i\SET
GLOBAL log_bin_trust_function_creators = 1;’ /initdb/davinci.sql

# 由于 docker compose 中启动顺序管理交给了容器自己# 详见
https://docs.docker.com/compose/startup-order/# 因此我们需要用 curl 探测 mysql 端口,当接受数据字节大于 0 时认为# 数据库可以连通,接下来我们执行 davinci spring boot 主程序 set
-e
host=”$1″shiftcmd=”$@”
until [$(curl -I -m 10 -o /dev/null -s -w %{size_download} $host) -gt 0 ]; do >&2 echo
“database is unavailable – sleeping” sleep 1done
source $cmd 复制代码
2、构建镜像
docker build -t=”edp963/davinci:v0.3.0-beta.4″ . 复制代码

3、Docker Compose
version: ‘3.6’services: davinci:
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:
– 58080:8080 # 等待 mysql 就绪后再启动 spring boot 主程序 command: [“./bin/start.sh”,
“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
volumes: davinci_userfiles: davinci_logs:
davinci_initdb: mysql_data: 复制代码
小提示:docker-compose.yml 环境变量配置 K = V 中不能出现空格,V 也不能用双引号包裹
4、Docker Compose 启动
docker-compose up -d 复制代码
5、仅 Docker 启动(使用外部数据库)
docker run -p 58081:8080 -e MYSQL_CONN=”jdbc:mysql://yourmysqlserver:3306/davinci0.3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true” \
-e DB_USER=”root” -e DB_PWD=”pwd” \
-e MAIL_HOST=”smtp.163.com”
-e MAIL_PORT=”465″
-e MAIL_STMP_SSL=”true” \
-e MAIL_USER=”xxxxxx@163.com”
-e MAIL_PWD=”xxxxxxx” \
-e MAIL_NICKNAME=”davinci_sys” \
edp963/davinci:v0.3.0-beta.4 复制代码
6、使用更丰富的配置
可以在宿主中添加一些配置文件,查看 davinci 配置:https://github.com/edp963/dav…
然后 docker run 时将其挂载到 /opt/davinci/config
docker run -p 58081:8080 -e MYSQL_CONN=”jdbc:mysql://yourmysqlserver:3306/davinci0.3?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true” \
-e DB_USER=”root” -e DB_PWD=”pwd” \
-e MAIL_HOST=”smtp.163.com” -e MAIL_PORT=”465″ -e MAIL_STMP_SSL=”true” \
-e MAIL_USER=”xxxxxx@163.com” -e MAIL_PWD=”xxxxxxx” \
-e MAIL_NICKNAME=”davinci_sys” \
-v/etc/davinci:/opt/davinci/config \
edp963/davinci:v0.3.0-beta.4
 

正文完
 0