器)
一、前提條件在開始之前請(qǐng)確保1. Docker環(huán)境已部署Ubuntu20.04已安裝Docker和Docker Compose(可參考Ubuntu20.04部署docker及docker-compose)2. 內(nèi)存要求在Docker容器上運(yùn)行FineBI需要內(nèi)存大于8G3. 磁盤空間至少2GB可用空間二、部署方案FineBI 在 Docker 中的部署主要有兩種方式方式一拉取 Tomcat 鏡像 掛載 webroot 部署方式二通過Dockerfile構(gòu)建鏡像部署本教程采用Dockerfile構(gòu)建方式配合Docker Compose編排將 MySQL 作為外接數(shù)據(jù)庫。三、詳細(xì)部署步驟3.1 準(zhǔn)備工作下載所需文件# 創(chuàng)建項(xiàng)目目錄并進(jìn)入 mkdir -p ~/finebi-docker cd ~/finebi-docker3.1.1 下載 JDKFineBI 要求 JDK 1.8小版本需在 JDK8u102 以上。# 下載 JDK 8 wget https://download.oracle.com/otn/java/jdk/8u202-b08/1961070e4c9b4e26a04e7f5a083f551e/jdk-8u202-linux-x64.tar.gz # 上面的命令執(zhí)行失敗可以換下面的華為源試試 # wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz注意64 位操作系統(tǒng)必須安裝 64 位 JDK。3.1.2 下載 TomcatFineBI 支持 Tomcat 8.0不支持 8.0.32 版本和 Tomcat 9.0不支持 Tomcat 10.0。wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz3.1.3 下載 FineBI 安裝包訪問 [FineBI 產(chǎn)品下載頁面](https://www.finebi.com/product/download)下載 Linux 版本的 FineBI 安裝包通常是.sh格式的文件。將下載的 FineBI 安裝包放到~/finebi-docker/目錄下。3.2 解壓文件# 解壓 JDK tar -zxvf jdk-8u202-linux-x64.tar.gz # 解壓 Tomcat tar -zxvf apache-tomcat-9.0.65.tar.gz # 重命名目錄方便后續(xù)使用 mv jdk1.8.0_202 jdk mv apache-tomcat-9.0.65 tomcat3.3 創(chuàng)建 Dockerfile在~/finebi-docker/目錄下創(chuàng)建Dockerfile文件vi Dockerfile寫入以下內(nèi)容注意根據(jù)實(shí)際文件名修改 JDK 和 Tomcat 的目錄名dockerfile FROM centos:7 MAINTAINER finebi RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \ yum clean all \ yum makecache # 設(shè)置系統(tǒng)編碼避免地圖顯示問題 RUN yum install kde-l10n-Chinese -y RUN yum install glibc-common -y RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 ENV LC_ALL zh_CN.UTF-8 # 切換工作目錄 WORKDIR /usr # 創(chuàng)建 jdk 和 tomcat 目錄 RUN mkdir jdk RUN mkdir tomcat # 拷貝 JDK 和 Tomcat ADD jdk /usr/jdk/ ADD tomcat /usr/tomcat/ # 設(shè)置環(huán)境變量 ENV JAVA_HOME/usr/jdk ENV JRE_HOME$JAVA_HOME/jre ENV CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH$JAVA_HOME/bin:$PATH # 拷貝 tools.jar 到 Tomcat lib ADD jdk/lib/tools.jar /usr/tomcat/lib/ # 暴露端口 EXPOSE 8080 EXPOSE 48888 # 賦予執(zhí)行權(quán)限 RUN chmod x /usr/tomcat/bin/catalina.sh # 啟動(dòng) Tomcat CMD [/usr/tomcat/bin/catalina.sh, run]3.4 創(chuàng)建 docker-compose文件在~/finebi-docker/目錄下創(chuàng)建docker-compose.yml文件vi docker-compose.yml寫入以下內(nèi)容version: 2.4 services: # MySQL 外接數(shù)據(jù)庫 mysql: image: mysql:8.0 container_name: finebi-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: FineBI2024Root # 請(qǐng)修改為強(qiáng)密碼 MYSQL_DATABASE: finedb # FineBI 外接數(shù)據(jù)庫名 MYSQL_USER: finebi MYSQL_PASSWORD: FineBI2024 # 請(qǐng)修改為強(qiáng)密碼 ports: 3306:3306 volumes: ./mysql-data:/var/lib/mysql # 數(shù)據(jù)持久化 ./mysql-conf:/etc/mysql/conf.d # 配置文件掛載 command: --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci --default-authentication-pluginmysql_native_password networks: finebi-network healthcheck: test: [CMD, mysqladmin, ping, -h, localhost, -u, root, -p$$MYSQL_ROOT_PASSWORD] interval: 10s timeout: 5s retries: 5 # FineBI 應(yīng)用 finebi: build: . container_name: finebi-app restart: unless-stopped ports: 8080:8080 # FineBI Web 訪問端口 48888:48888 # FineBI 內(nèi)部通信端口 volumes: ./webroot:/usr/tomcat/webapps/webroot # webroot 持久化 ./finebi-logs:/usr/tomcat/logs # 日志持久化 depends_on: mysql: condition: service_healthy environment: TZAsia/Shanghai networks: finebi-network networks: finebi-network: driver: bridge volumes: mysql-data: mysql-conf: webroot: finebi-logs:3.5 部署 FineBI webroot在啟動(dòng)容器之前需要將 FineBI 的 webroot 部署到容器中。方法一啟動(dòng)容器后拷貝# 先構(gòu)建并啟動(dòng)容器 docker-compose up -d # 等待容器運(yùn)行正常后將 FineBI 安裝包中的 webroot 拷貝到宿主機(jī)掛載目錄 # 首先解壓 FineBI 安裝包獲取 webroot chmod x linux_unix_FineBI*.sh ./linux_unix_FineBI*.sh --target ./finebi-extract # 將 webroot 拷貝到掛載目錄 cp -r ./finebi-extract/webroot ./webroot # 重啟容器使配置生效 docker-compose restart finebi方法二直接放置 webroot推薦# 解壓 FineBI 安裝包獲取 webroot chmod x linux_unix_FineBI*.sh ./linux_unix_FineBI*.sh --target ./finebi-extract # 直接創(chuàng)建 webroot 目錄并放置內(nèi)容 mkdir -p ./webroot cp -r ./finebi-extract/webroot/* ./webroot/3.6 構(gòu)建并啟動(dòng)所有容器# 構(gòu)建 FineBI 鏡像并啟動(dòng)所有服務(wù) docker-compose up -d --build# 查看運(yùn)行狀態(tài) docker-compose ps # 查看 FineBI 日志 docker-compose logs -f finebi # 查看 MySQL 日志 docker-compose logs -f mysql四、配置 FineBI 外接數(shù)據(jù)庫4.1 訪問 FineBI在瀏覽器中訪問http://{服務(wù)器IP}:8080/webroot/decision首次訪問會(huì)進(jìn)入 FineBI 初始化配置頁面。4.2 配置外接數(shù)據(jù)庫1. 在初始化配置頁面選擇 “外接數(shù)據(jù)庫”2. 點(diǎn)擊 “配置數(shù)據(jù)庫”3. 填寫以下信息數(shù)據(jù)庫類型MySQL驅(qū)動(dòng)com.mysql.jdbc.Driver主機(jī)mysql因?yàn)槿萜髟谕?Docker 網(wǎng)絡(luò)中使用服務(wù)名即可端口3306數(shù)據(jù)庫名稱finedb與 docker-compose.yml 中配置的一致用戶名finebi密碼FineBI2024與 docker-compose.yml 中配置的一致4. 點(diǎn)擊 “測(cè)試連接”確認(rèn)連接成功后點(diǎn)擊 “保存”4.3 完成初始化按照頁面提示完成管理員賬號(hào)設(shè)置即可登錄 FineBI 開始使用。五、常用管理命令# 啟動(dòng)所有服務(wù) docker-compose up -d # 停止所有服務(wù) docker-compose down # 停止并刪除數(shù)據(jù)卷謹(jǐn)慎操作 docker-compose down -v # 查看日志 docker-compose logs -f finebi # 重啟某個(gè)服務(wù) docker-compose restart finebi # 進(jìn)入容器內(nèi)部 docker exec -it finebi-app /bin/ # 進(jìn)入 MySQL 容器 docker exec -it finebi-mysql mysql -uroot -p六、注意事項(xiàng)1. 內(nèi)存要求確保服務(wù)器內(nèi)存大于 8G否則 FineBI 可能無法正常運(yùn)行2. MySQL 版本兼容性FineBI 支持 MySQL 5.1.73、5.5.x、5.6.x、5.7.x 以及 MySQL 8。本教程使用 MySQL 8.0如需使用 MySQL 5.7可將鏡像版本改為mysql:5.73. 密碼安全請(qǐng)務(wù)必將 docker-compose.yml 中的默認(rèn)密碼修改為強(qiáng)密碼4. 端口沖突確保宿主機(jī)的 8080 和 3306 端口未被占用如有沖突請(qǐng)修改端口映射5. 數(shù)據(jù)持久化webroot、mysql-data和logs目錄已通過 volume 掛載重啟或刪除容器后數(shù)據(jù)不會(huì)丟失6. 生產(chǎn)環(huán)境建議使用更復(fù)雜的數(shù)據(jù)庫密碼配置 MySQL 的定期備份考慮使用獨(dú)立的 MySQL 服務(wù)器而非容器化 MySQL配置 FineBI 的日志輪轉(zhuǎn)7. FineBI6.1注意事項(xiàng)FineBI6.1僅支持容器化部署可通過官方FineKey工具部署。如需部署6.1版本建議參考帆軟官方文檔使用FineKey工具七、故障排查1. 容器無法啟動(dòng)# 查看詳細(xì)日志docker-compose logs# 檢查端口占用netstat -tlnp | grep 8080netstat -tlnp | grep 33062. FineBI 無法連接 MySQL檢查 MySQL 容器是否正常運(yùn)行docker-compose ps mysql檢查網(wǎng)絡(luò)連通性docker exec -it finebi-app ping mysql確認(rèn)MySQL中finedb數(shù)據(jù)庫已創(chuàng)建docker exec -it finebi-mysql mysql -uroot -p -e SHOW DATABASES;3. 訪問頁面 404確認(rèn) webroot 已正確部署到./webroot目錄檢查 Tomcat 日志docker-compose logs finebi | grep -i error