天天看點

davinci docker部署_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後預設會有,否則請手動安裝)。

二、完整步驟

git clone https://github.com/edp963/davinci-docker.gitcd /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/davinci-docker

三、Docker支援環境變量清單

davinci docker部署_Davinci一鍵部署 | 論如何三句代碼跑起Davinci

四、原理分析

制作Davinci Docker鏡像

1. Dockfile分析

FROM java:8-jreLABEL MAINTAINER="[email protected]"# 從github上下載下傳分發包并解壓RUN cd /  && mkdir -p /opt/davinci && wgethttps://github.com/edp963/davinci/releases/download/v0.3.0-beta.4/davinci-assembly_3.0.1-0.3.0-SNAPSHOT-dist-beta.4.zip && unzipdavinci-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 bootADD 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必備的兩個環境變量ENVDAVINCI3_HOME /opt/davinciENV PHANTOMJS_HOME /opt/phantomjs-2.1.1WORKDIR /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 /initdbcatdavinci.sql > /initdb/davinci.sqlsed -i '1iSETGLOBAL 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-ehost="$1"shiftcmd="[email protected]"until [ $(curl -I -m 10 -o /dev/null -s -w %{size_download} $host) -gt 0 ]; do >&2 echo"database is unavailable - sleeping" sleep 1donesource $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 - [email protected] - MAIL_PWD=xxxxxxxx - MAIL_NICKNAME=davinci image: "edp963/davinci:v0.3.0-beta.4" ports: - 58080:8080 # 等待mysql就緒後再啟動spring boot主程式 command: ["./bin/start.sh