在線Demo (體驗帳號: demo@tank.eyeblue.cn 密碼:123456)html
後端tank地址前端
藍眼雲盤是 藍眼系列開源軟件 之一,也是藍眼系列其餘軟件的基礎服務軟件。藍眼博客具備如下幾大特點:mysql
1. 支持dockerlinux
2. 軟件體積小,跨平臺,運行簡單git
windows
linux
mac OS
操做系統中都可安裝運行;3. 使用方便,核心功能齊全github
4. 支持接口編程golang
5. 先後端分離,文檔豐富web
golang
,沒有使用任何web框架;初始化安裝,生命週期控制,路由管理,路由匹配,日誌管理,依賴注入,錯誤處理,panic攔截,打包,安裝腳本等功能全採用純手動打造,綠色環保,所以代碼更精煉,更具備探討學習的價值。若是您以爲藍眼雲盤對您有幫助,請不要吝惜您的star sql
藍眼雲盤在運行時依賴mysql
數據庫,所以最好的方式是使用docker-compose
來運行,若是你對docker-compose
不熟悉,能夠參考這篇文章:《Docker Compose 項目》
1.準備 docker-compose.yml 文件 docker-compose.yml
描述了鏡像啓動的數據卷,環境變量,啓動方式,依賴項等。該文件位於項目的根目錄下,內容以下:
#docker-compose版本,這裏的3不要動 version: "3" services: # 數據庫的鏡像信息 # 使用mysql:5.7的鏡像 db: image: mysql:5.7 volumes: # 數據庫文件存放在宿主機的`~/data/mysql`位置,若是宿主機目錄不存在,則會自動建立 - ~/data/mysql:/var/lib/mysql # 若是啓動失敗,則老是會重啓。由於鏡像有依賴的狀況,不停重啓能夠保證依賴項啓動成功後本身再運行 restart: always environment: # 指定root密碼爲`tank123`,而且建立一個新數據庫`tank`,同時用戶名和密碼爲`tank` `tank123` MYSQL_ROOT_PASSWORD: tank123 MYSQL_DATABASE: tank MYSQL_USER: tank MYSQL_PASSWORD: tank123 # 藍眼雲盤的鏡像信息 # 依賴 mysql:5.7 的鏡像 tank: image: eyeblue/tank:1.0.2 depends_on: - db ports: # 端口映射關係,宿主機端口:鏡像端口 - "6010:6010" # 若是啓動失敗,則老是會重啓。由於鏡像有依賴的狀況,不停重啓能夠保證依賴項啓動成功後本身再運行 restart: always environment: # mysql的端口 TANK_MYSQL_PORT: 3306 # Mysql的主機,和services的第一個節點一致。 TANK_MYSQL_HOST: db # 數據庫 TANK_MYSQL_SCHEMA: tank # 數據庫的用戶名 TANK_MYSQL_USERNAME: tank # 數據庫的密碼 TANK_MYSQL_PASSWORD: tank123 # 超級管理員的暱稱。只能是英文或數字 TANK_ADMIN_USERNAME: admin # 超級管理員郵箱,做爲登陸帳號 TANK_ADMIN_EMAIL: admin@tank.eyeblue.cn # 超級管理員密碼,做爲登陸密碼 TANK_ADMIN_PASSWORD: 123456 volumes: # 日誌文件存放在宿主機的`~/data/tank/log`位置,若是宿主機目錄不存在,則會自動建立 - ~/data/tank/log:/data/log # 上傳文件存放在宿主機的`~/data/tank/matter`位置,若是宿主機目錄不存在,則會自動建立 - ~/data/tank/matter:/data/matter
2.運行項目
首先保證當前目錄是docker-compose.yml
所在的目錄,而後執行如下指令便可運行藍眼雲盤:
$ docker-compose up -d
3.驗證
因爲數據庫啓動須要必定的時間,所以大約20s後,打開瀏覽器訪問http://127.0.0.1:6010
,若是看到登陸界面則表示運行成功。
4.中止項目
方法一:使用如下命令來中止藍眼雲盤
$ docker-compose stop
方法二:固然你也能夠用中止容器的方式來中止藍眼雲盤
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f5f64735fc53 eyeblue/tank:1.0.2 "/go/bin/tank" 20 minutes ago Up 13 seconds 0.0.0.0:6010->6010/tcp tank_tank_1 3a859cad3e7e mysql:5.7 "docker-entrypoint.s…" 20 minutes ago Up 14 seconds 3306/tcp tank_db_1 $ docker container stop f5 $ docker container stop 3a
若是你比較關心如何使用docker來構建藍眼雲盤,請參考 《Docker 化你的開源項目》
a) 準備工做
conf/tank.json
,各項說明以下:{ //服務器運行的端口,默認6010。若是配置爲80,則可直接用http打開 "ServerPort": 6010, //日誌是否須要打印到控制檯,默認false,主要用於調試 "LogToConsole": false, //Mysql端口,默認3306 "MysqlPort": 3306, //Mysql主機 "MysqlHost": "127.0.0.1", //Mysql數據庫名稱 "MysqlSchema": "tank", //Mysql用戶名,建議爲藍眼雲盤建立一個用戶,不建議使用root "MysqlUserName": "tank", //Mysql密碼 "MysqlPassword": "tank123", //超級管理員用戶名,只能是字母和數字 "AdminUsername": "admin", //超級管理員郵箱,做爲登陸的帳號 "AdminEmail": "admin@tank.eyeblue.cn", //超級管理員密碼 "AdminPassword": "123456" }
b) 運行
tank.exe
。cd 應用目錄路徑 ./tank
若是你但願關閉shell窗口後,應用依然運行,請使用如下腳本啓動和中止
# 啓動應用 cd 應用目錄路徑/service ./startup.sh # 中止應用 cd 應用目錄路徑/service ./shutdown.sh
c) 驗證
瀏覽器中打開 http://127.0.0.1:6010 (127.0.0.1請使用服務器所在ip,6010請使用tank.json
中配置的ServerPort
) 能夠看到登陸頁面,而且使用配置文件中的郵箱和密碼登陸成功後能夠看到所有文件(見上文截圖)即表示安裝成功。
前端項目打包
npm install
npm run build
dist
文件夾下獲得打包後的靜態文件,將dist
目錄下的全部文件拷貝到後端項目的build/html
文件夾下。(下文的工程目錄中也有說明)後端項目打包
GOPATH
配置到工程目錄,建議工程目錄結構以下:golang #環境變量GOPATH所在路徑 ├── bin #編譯生成的可執行文件目錄 ├── pkg #編譯生成第三方庫 ├── src #golang工程源代碼 │ ├── github.com #來自github的第三方庫 │ ├── golang.org #來自golang.org的第三方庫 │ ├── tank #clone下來的tank根目錄 │ │ ├── build #用來輔助打包的文件夾 │ │ │ ├── conf #默認的配置文件 │ │ │ ├── doc #文檔 │ │ │ ├── html #前端靜態資源,從項目tank-front編譯得到 │ │ │ ├── pack #打包的腳本 │ │ │ ├── service #將tank看成服務啓動的腳本 │ │ ├── dist #運行打包腳本後得到的安裝包目錄 │ │ ├── rest #golang源代碼
其中golang.org/x
國內沒法下載,默認會經過git clone 的方式從 這裏下載。其他依賴項均會經過go get
的方式下載。
tank/build/pack/build.bat
,成功以後可在tank/dist
下看到tank-x.x.x
文件夾,該文件夾即爲最終安裝包。cd tank/build/pack/ ./build.sh
成功以後可在tank/dist
下看到tank-x.x.x.linux-amd64.tar.gz
利用獲得的安裝包便可參考上文的安裝
一節進行安裝。
感謝全部藍眼雲盤的貢獻者 @zicla,@seaheart,@yemuhe,@hxsherry
若是您也想參與進來,請盡情的fork, star, post issue, pull requests
Copyright (c) 2017-present, eyeblue.cn
原文發佈於藍眼博客 http://blog.eyeblue.cn/home/article/8953d493-f80a-4be0-bde2-50d3c5747430