当前位置: 首页 > news >正文

Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存储)

Datart Docker 部署完整指南(PostgreSQL 持久化存储)

一、概述

本文档详细介绍如何使用 Docker 部署 Datart 数据可视化平台,并使用 PostgreSQL 作为元数据库实现数据持久化存储。采用此方案后,即使容器被删除重建,所有配置、用户、报表等数据均不会丢失。

环境要求

  • Docker 18.09+
  • PostgreSQL 16.4+(或更高版本)
  • 服务器内存:建议 2GB 以上
  • 开放端口:8080(Datart)、5432(PostgreSQL)

二、准备 PostgreSQL 数据库

2.1 安装 PostgreSQL(如未安装)

使用 Docker 部署 PostgreSQL(推荐):

dockerrun-d\--namepostgres\--restartalways\-ePOSTGRES_PASSWORD='your_password'\-ePOSTGRES_DB=postgres\-p5432:5432\-v/data/postgres:/var/lib/postgresql\-v/data/postgres/config:/etc/postgresql\registry.cn-hangzhou.aliyuncs.com/qiluo-images/postgres:latest

或使用系统包管理器安装(Ubuntu/Debian):

apt-getupdateapt-getinstall-ypostgresql-13 systemctl start postgresql

2.2 创建 Datart 数据库

连接到 PostgreSQL 并创建数据库:

# 使用 Docker 部署的 PostgreSQLdockerexec-itpostgres psql-Upostgres# 或使用系统安装的 PostgreSQLsudo-upostgres psql

执行以下 SQL 命令:

-- 创建数据库(注意字符集)CREATEDATABASEdatartWITHENCODING='UTF8'LC_COLLATE='en_US.UTF-8'LC_CTYPE='en_US.UTF-8'TEMPLATE=template0;-- 可选:创建专用用户CREATEUSERdatart_userWITHPASSWORD'datart_password';-- 授予权限GRANTALLPRIVILEGESONDATABASEdatartTOdatart_user;-- 退出\q

三、配置 Datart

3.1 创建持久化目录

# 创建配置、文件、日志存储目录mkdir-p/data/datart/configmkdir-p/data/datart/filesmkdir-p/data/datart/logs

3.2 编写配置文件

创建配置文件/data/datart/config/datart.conf

# ============================================ # Datart 配置文件(PostgreSQL 版本) # ============================================ # ---------- PostgreSQL 数据库连接 ---------- # 数据库服务器地址(可以是 IP、域名或容器名) datasource.ip=127.0.0.1 datasource.port=5432 datasource.database=datart datasource.username=postgres datasource.password=your_password # JDBC 驱动配置 datasource.driver-class-name=org.postgresql.Driver datasource.url=jdbc:postgresql://127.0.0.1:5432/datart # ---------- 连接池配置 ---------- # 最大连接数(根据服务器性能调整) spring.datasource.hikari.maximum-pool-size=20 # 最小空闲连接 spring.datasource.hikari.minimum-idle=5 # 连接超时时间(毫秒) spring.datasource.hikari.connection-timeout=30000 # 空闲连接存活时间(毫秒) spring.datasource.hikari.idle-timeout=600000 # 连接最大生命周期(毫秒) spring.datasource.hikari.max-lifetime=1800000 # ---------- 服务配置 ---------- # 服务端口 server.port=8080 # 服务监听地址(0.0.0.0 表示所有网卡) server.address=0.0.0.0 # 会话超时时间(分钟) server.servlet.session.timeout=30m # ---------- Datart 应用配置 ---------- # 应用访问地址(必须修改为实际服务器地址) datart.address=http://your-server-ip:8080 # 文件存储路径(容器内路径) datart.filepath=/datart/files # 关闭邮件功能(如不需要发送邮件) datart.send-mail=false # ---------- 日志配置 ---------- # 日志级别(DEBUG/INFO/WARN/ERROR) logging.level.com.datart=INFO logging.level.org.springframework.web=INFO # 日志文件路径 logging.file.path=/datart/logs # ---------- 其他配置 ---------- # 是否允许注册(生产环境建议关闭) datart.user.registration.enabled=true # 默认时区 spring.jackson.time-zone=Asia/Shanghai

3.3 配置文件权限设置

# 确保配置文件可读chmod644/data/datart/config/datart.conf

四、部署 Datart

4.1 拉取镜像

# x86镜像dockerpull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_datart:latest# arrch64镜像dockerpull registry.cn-hangzhou.aliyuncs.com/qiluo-images/datart:latest

4.2 启动容器

dockerrun-d\--namedatart\--restartunless-stopped\-p8080:8080\-v/data/datart/config/datart.conf:/datart/config/datart.conf\-v/data/datart/files:/datart/files\-v/data/datart/logs:/datart/logs\registry.cn-hangzhou.aliyuncs.com/qiluo-images/datart:latest

参数说明:

  • -d:后台运行
  • --name datart:容器名称
  • --restart unless-stopped:自动重启
  • -p 8080:8080:端口映射
  • -v:挂载持久化目录

4.3 验证启动状态

# 查看容器运行状态dockerps|grepdatart# 查看启动日志dockerlogs-fdatart# 预期输出(关键信息)# Started DatartServerApplication in X.XXX seconds# HikariPool-1 - Start completed.# Tomcat started on port(s): 8080 (http)

五、验证持久化存储

5.1 验证数据库连接

进入 PostgreSQL 查看表结构:

# 进入 PostgreSQL 容器dockerexec-itpostgres psql-Upostgres-ddatart# 查看表列表(应该看到 Datart 自动创建的表)\dt# 预期输出类似:# user | datart_user | table | datart_user# organization | datart_user | table | datart_user# source | datart_user | table | datart_user# view | datart_user | table | datart_user# ...

5.2 访问 Web 界面

  1. 打开浏览器访问:http://你的服务器IP:8080
  2. 首次访问需要注册管理员账号
  3. 登录后创建测试报表或上传文件

5.3 验证文件持久化

# 在 Datart 中上传一个测试文件(如图片)# 然后检查宿主机目录ls-la/data/datart/files/# 应该能看到上传的文件

5.4 验证数据持久化

# 重启容器dockerrestart datart# 再次访问 Web 界面,确认以下内容未丢失:# - 管理员账号可以正常登录# - 之前创建的报表依然存在# - 上传的文件依然可用

六、高级配置

6.1 使用 Docker Compose 部署(推荐)

创建docker-compose.yml文件:

version:'3.8'services:postgres:image:postgres:13container_name:datart-postgresrestart:unless-stoppedenvironment:POSTGRES_DB:datartPOSTGRES_USER:postgresPOSTGRES_PASSWORD:your_passwordvolumes:-./postgres/data:/var/lib/postgresql/dataports:-"5432:5432"networks:-datart-networkdatart:image:registry.cn-hangzhou.aliyuncs.com/qiluo-images/datart:latestcontainer_name:datartrestart:unless-stoppeddepends_on:-postgresports:-"8080:8080"volumes:-./datart/config/datart.conf:/datart/config/datart.conf-./datart/files:/datart/files-./datart/logs:/datart/logsnetworks:-datart-networknetworks:datart-network:driver:bridge

启动服务:

# 启动所有服务docker-composeup-d# 查看日志docker-composelogs-fdatart# 停止服务docker-composedown# 停止并删除数据(谨慎使用)docker-composedown-v

6.2 SSL/HTTPS 配置(可选)

如需启用 HTTPS,建议使用 Nginx 反向代理:

server { listen 443 ssl http2; server_name datart.yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

七、常见问题排查

7.1 容器启动失败

# 查看详细错误日志dockerlogs datart# 常见错误及解决
错误信息原因解决方案
Connection refusedPostgreSQL 未启动或端口不通检查 PostgreSQL 状态:docker ps | grep postgres
Database "datart" does not exist数据库未创建手动创建数据库:CREATE DATABASE datart;
Password authentication failed密码错误检查配置文件中的密码是否正确
ClassNotFoundException: org.postgresql.Driver缺少 PostgreSQL 驱动镜像已内置驱动,检查镜像是否完整

7.2 PostgreSQL 连接问题

# 测试从容器内连接 PostgreSQLdockerexec-itdatartbashapt-getupdate&&apt-getinstall-ypostgresql-client psql-h宿主机IP-p5432-Upostgres-ddatart# 如果连接失败,检查:# 1. PostgreSQL 是否允许远程连接dockerexec-itpostgrescat/var/lib/postgresql/data/pg_hba.conf# 应包含:host all all 0.0.0.0/0 md5# 2. 防火墙是否开放 5432 端口iptables-L-n|grep5432

7.3 内存不足问题

如果服务器内存不足,调整 JVM 参数:

dockerrun-d\--namedatart\--restartunless-stopped\-p8080:8080\-eJAVA_OPTS="-Xms512m -Xmx1024m"\-v/data/datart/config/datart.conf:/datart/config/datart.conf\-v/data/datart/files:/datart/files\-v/data/datart/logs:/datart/logs\registry.cn-hangzhou.aliyuncs.com/qiluo-images/datart:latest

7.4 配置文件未生效

# 检查容器内的配置文件内容dockerexecdatartcat/datart/config/datart.conf# 检查环境变量dockerexecdatartenv|grep-E"(DATASOURCE|JDBC)"# 如果配置未生效,重启容器dockerrestart datart

八、备份与恢复

8.1 数据库备份

# 备份 PostgreSQL 数据库dockerexecpostgres pg_dump-Upostgres datart>datart_backup_$(date+%Y%m%d).sql# 恢复数据库catdatart_backup_20240101.sql|dockerexec-ipostgres psql-Upostgres-ddatart

8.2 文件备份

# 备份上传的文件tar-czfdatart_files_backup_$(date+%Y%m%d).tar.gz /data/datart/files/# 恢复文件tar-xzfdatart_files_backup_20240101.tar.gz-C/

8.3 完整备份脚本

创建备份脚本/home/datart/backup.sh

#!/bin/bashBACKUP_DIR="/data/datart/backups"DATE=$(date+%Y%m%d_%H%M%S)# 创建备份目录mkdir-p$BACKUP_DIR# 备份数据库dockerexecpostgres pg_dump-Upostgres datart>$BACKUP_DIR/datart_db_$DATE.sql# 备份文件tar-czf$BACKUP_DIR/datart_files_$DATE.tar.gz /data/datart/files/# 备份配置文件cp/data/datart/config/datart.conf$BACKUP_DIR/datart_conf_$DATE.conf# 删除 30 天前的备份find$BACKUP_DIR-name"datart_*"-mtime+30-deleteecho"Backup completed:$DATE"

添加定时任务:

chmod+x /data/datart/backup.shecho"0 2 * * * /home/datart/backup.sh"|crontab-

九、监控与维护

9.1 查看资源使用

# 查看容器资源占用dockerstats datart postgres# 查看日志大小du-sh/data/datart/logs/

9.2 日志轮转配置

创建/etc/logrotate.d/datart

/data/datart/logs/*.log { daily rotate 7 compress delaycompress missingok notifempty copytruncate }

9.3 性能优化建议

  1. 数据库优化:根据数据量调整 PostgreSQL 共享内存
  2. JVM 优化:根据服务器内存调整-Xmx参数
  3. 连接池优化:根据并发用户数调整maximum-pool-size

十、总结

通过以上配置,Datart 已经成功部署在 Docker 中,并使用 PostgreSQL 作为持久化存储。该方案具有以下优势:

  • 数据持久化:所有数据存储在外部 PostgreSQL 数据库
  • 文件持久化:上传文件存储在宿主机目录
  • 配置持久化:配置文件挂载到宿主机
  • 易于迁移:容器可随时重建而不丢失数据
  • 便于备份:数据库和文件可独立备份

快速命令参考

# 启动dockerstart datart# 停止dockerstop datart# 重启dockerrestart datart# 查看日志dockerlogs-fdatart# 进入容器dockerexec-itdatartbash# 删除容器(数据不会丢失)dockerrm-fdatart# 重新创建容器(使用相同挂载)dockerrun-d--namedatart\-p8080:8080\-v/data/datart/config/datart.conf:/datart/config/datart.conf\-v/data/datart/files:/datart/files\-v/data/datart/logs:/datart/logs\registry.cn-hangzhou.aliyuncs.com/qiluo-images/datart:latest

如有问题,请检查日志输出并根据错误信息进行排查。

http://www.cnnetsun.cn/news/1394080.html

相关文章:

  • Realistic Vision V5.1 虚拟摄影棚:Matlab联合仿真——生成训练数据用于算法验证
  • VideoAgentTrek-ScreenFilter赋能CAD设计评审:自动识别设计演示视频中的敏感信息
  • 别再猜了!手把手教你用Roboguide的TCP Trace功能,看清发那科机器人拐弯时到底有多慢
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI学术应用:LaTeX文档智能校对与公式建议
  • 自媒体创作神器:OpenClaw+QwQ-32B批量生成小红书爆款标题
  • 别再死记硬背了!用Python手把手复现神经网络经典算法(从Hebb到Hopfield)
  • OpenClaw技能开发入门:为Qwen3-32B定制专属文件处理器
  • Xinference多模态应用实战:从零搭建图片理解聊天机器人
  • ESP8266轻量级Homie IoT封装库:零开销C++抽象
  • MAA异常检测与实时通知系统配置指南
  • springboot高校共享机房实验室报告评分管理系统vue
  • YOLO-v8.3新手必看:从零开始,10分钟搞定第一个检测模型
  • 嵌入式轻量级协作式任务调度器设计与实现
  • VisionPro开发小技巧:不用VS自带控件,也能给CogToolBlockEditV2工具栏加个“专属按钮”
  • Phi-4-mini-reasoning模型微调指南:领域适配实战
  • 电视盒子终极解放指南:TVBoxOSC让家庭娱乐焕然一新
  • Qwen-Image镜像开发者案例:RTX4090D助力初创团队2周上线多模态客服原型
  • Starry Night效果展示:动态字体随画作风格自动切换的UI交互设计
  • SwartNinjaSMD:轻量级TB6600步进电机嵌入式驱动库
  • MT5 Zero-Shot中文增强教程:从源码编译到Streamlit服务启动
  • 拖延症福音!全领域适配降AI神器 —— 千笔
  • 【JavaEE】Spring Web MVC
  • 水墨江南模型重装系统后的快速恢复部署
  • Qwen3-32B-Chat快速部署:无需conda/pip,纯镜像内环境启动零报错实录
  • 【AI产品经理进阶】Dify+Python实战:构建智能竞品监控Agent的5大核心模块(含源码解析)
  • Figma-to-JSON:打破设计工具数据孤岛的开源解决方案
  • Botty完全指南:暗黑破坏神2自动化刷宝的智能识别技术与实战优化策略
  • Qwen3-0.6B-FP8快速部署:Win10系统配置指南
  • ChromePass:3分钟找回Chrome浏览器所有密码的完整指南
  • Qwen3-32B部署保姆级教程:CUDA12.4+550.90.07驱动下RTX4090D免配置镜像详解