Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存储)
作者:❀͜͡傀儡师
本文档详细介绍如何使用Docker部署Datart数据可视化平台,并使用PostgreSQL作为元数据库实现数据持久化存储,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

一、概述
本文档详细介绍如何使用 Docker 部署 Datart 数据可视化平台,并使用 PostgreSQL 作为元数据库实现数据持久化存储。采用此方案后,即使容器被删除重建,所有配置、用户、报表等数据均不会丢失。
环境要求
- Docker 18.09+
- PostgreSQL 16.4+(或更高版本)
- 服务器内存:建议 2GB 以上
- 开放端口:8080(Datart)、5432(PostgreSQL)
二、准备 PostgreSQL 数据库
2.1 安装 PostgreSQL(如未安装)
使用 Docker 部署 PostgreSQL(推荐):
docker run -d \ --name postgres \ --restart always \ -e POSTGRES_PASSWORD='your_password' \ -e POSTGRES_DB=postgres \ -p 5432: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-get update apt-get install -y postgresql-13 systemctl start postgresql
2.2 创建 Datart 数据库
连接到 PostgreSQL 并创建数据库:
# 使用 Docker 部署的 PostgreSQL docker exec -it postgres psql -U postgres # 或使用系统安装的 PostgreSQL sudo -u postgres psql
执行以下 SQL 命令:
-- 创建数据库(注意字符集) CREATE DATABASE datart WITH ENCODING='UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0; -- 可选:创建专用用户 CREATE USER datart_user WITH PASSWORD 'datart_password'; -- 授予权限 GRANT ALL PRIVILEGES ON DATABASE datart TO datart_user; -- 退出 \q
三、配置 Datart
3.1 创建持久化目录
# 创建配置、文件、日志存储目录 mkdir -p /data/datart/config mkdir -p /data/datart/files mkdir -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 配置文件权限设置
# 确保配置文件可读 chmod 644 /data/datart/config/datart.conf
四、部署 Datart
4.1 拉取镜像
# x86镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_datart:latest # arrch64镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/datart:latest
4.2 启动容器
docker run -d \ --name datart \ --restart unless-stopped \ -p 8080: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 验证启动状态
# 查看容器运行状态 docker ps | grep datart # 查看启动日志 docker logs -f datart # 预期输出(关键信息) # Started DatartServerApplication in X.XXX seconds # HikariPool-1 - Start completed. # Tomcat started on port(s): 8080 (http)
五、验证持久化存储
5.1 验证数据库连接
进入 PostgreSQL 查看表结构:
# 进入 PostgreSQL 容器 docker exec -it postgres psql -U postgres -d datart # 查看表列表(应该看到 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 界面
- 打开浏览器访问:
http://你的服务器IP:8080 - 首次访问需要注册管理员账号
- 登录后创建测试报表或上传文件
5.3 验证文件持久化
# 在 Datart 中上传一个测试文件(如图片) # 然后检查宿主机目录 ls -la /data/datart/files/ # 应该能看到上传的文件
5.4 验证数据持久化
# 重启容器 docker restart datart # 再次访问 Web 界面,确认以下内容未丢失: # - 管理员账号可以正常登录 # - 之前创建的报表依然存在 # - 上传的文件依然可用
六、高级配置
6.1 使用 Docker Compose 部署(推荐)
创建 docker-compose.yml 文件:
version: '3.8'
services:
postgres:
image: postgres:13
container_name: datart-postgres
restart: unless-stopped
environment:
POSTGRES_DB: datart
POSTGRES_USER: postgres
POSTGRES_PASSWORD: your_password
volumes:
- ./postgres/data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- datart-network
datart:
image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/datart:latest
container_name: datart
restart: unless-stopped
depends_on:
- postgres
ports:
- "8080:8080"
volumes:
- ./datart/config/datart.conf:/datart/config/datart.conf
- ./datart/files:/datart/files
- ./datart/logs:/datart/logs
networks:
- datart-network
networks:
datart-network:
driver: bridge启动服务:
# 启动所有服务 docker-compose up -d # 查看日志 docker-compose logs -f datart # 停止服务 docker-compose down # 停止并删除数据(谨慎使用) docker-compose down -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 容器启动失败
# 查看详细错误日志 docker logs datart # 常见错误及解决
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
Connection refused | PostgreSQL 未启动或端口不通 | 检查 PostgreSQL 状态:docker ps | grep postgres |
Database "datart" does not exist | 数据库未创建 | 手动创建数据库:CREATE DATABASE datart; |
Password authentication failed | 密码错误 | 检查配置文件中的密码是否正确 |
ClassNotFoundException: org.postgresql.Driver | 缺少 PostgreSQL 驱动 | 镜像已内置驱动,检查镜像是否完整 |
7.2 PostgreSQL 连接问题
# 测试从容器内连接 PostgreSQL docker exec -it datart bash apt-get update && apt-get install -y postgresql-client psql -h 宿主机IP -p 5432 -U postgres -d datart # 如果连接失败,检查: # 1. PostgreSQL 是否允许远程连接 docker exec -it postgres cat /var/lib/postgresql/data/pg_hba.conf # 应包含:host all all 0.0.0.0/0 md5 # 2. 防火墙是否开放 5432 端口 iptables -L -n | grep 5432
7.3 内存不足问题
如果服务器内存不足,调整 JVM 参数:
docker run -d \ --name datart \ --restart unless-stopped \ -p 8080:8080 \ -e JAVA_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 配置文件未生效
# 检查容器内的配置文件内容 docker exec datart cat /datart/config/datart.conf # 检查环境变量 docker exec datart env | grep -E "(DATASOURCE|JDBC)" # 如果配置未生效,重启容器 docker restart datart
八、备份与恢复
8.1 数据库备份
# 备份 PostgreSQL 数据库 docker exec postgres pg_dump -U postgres datart > datart_backup_$(date +%Y%m%d).sql # 恢复数据库 cat datart_backup_20240101.sql | docker exec -i postgres psql -U postgres -d datart
8.2 文件备份
# 备份上传的文件 tar -czf datart_files_backup_$(date +%Y%m%d).tar.gz /data/datart/files/ # 恢复文件 tar -xzf datart_files_backup_20240101.tar.gz -C /
8.3 完整备份脚本
创建备份脚本 /home/datart/backup.sh:
#!/bin/bash BACKUP_DIR="/data/datart/backups" DATE=$(date +%Y%m%d_%H%M%S) # 创建备份目录 mkdir -p $BACKUP_DIR # 备份数据库 docker exec postgres pg_dump -U postgres 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 -delete echo "Backup completed: $DATE"
添加定时任务:
chmod +x /data/datart/backup.sh echo "0 2 * * * /home/datart/backup.sh" | crontab -
九、监控与维护
9.1 查看资源使用
# 查看容器资源占用 docker stats 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 性能优化建议
- 数据库优化:根据数据量调整 PostgreSQL 共享内存
- JVM 优化:根据服务器内存调整
-Xmx参数 - 连接池优化:根据并发用户数调整
maximum-pool-size
十、总结
通过以上配置,Datart 已经成功部署在 Docker 中,并使用 PostgreSQL 作为持久化存储。该方案具有以下优势:
- ✅ 数据持久化:所有数据存储在外部 PostgreSQL 数据库
- ✅ 文件持久化:上传文件存储在宿主机目录
- ✅ 配置持久化:配置文件挂载到宿主机
- ✅ 易于迁移:容器可随时重建而不丢失数据
- ✅ 便于备份:数据库和文件可独立备份
快速命令参考
# 启动 docker start datart # 停止 docker stop datart # 重启 docker restart datart # 查看日志 docker logs -f datart # 进入容器 docker exec -it datart bash # 删除容器(数据不会丢失) docker rm -f datart # 重新创建容器(使用相同挂载) docker run -d --name datart \ -p 8080: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
如有问题,请检查日志输出并根据错误信息进行排查。
到此这篇关于Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存储)的文章就介绍到这了,更多相关Docker 部署Datart BI内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
