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

 更新时间:2026年03月21日 15:07:46   作者:❀͜͡傀儡师  
本文档详细介绍如何使用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 界面

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

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 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 连接问题

# 测试从容器内连接 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 性能优化建议

  1. 数据库优化:根据数据量调整 PostgreSQL 共享内存
  2. JVM 优化:根据服务器内存调整 -Xmx 参数
  3. 连接池优化:根据并发用户数调整 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Ubuntu16.04Docker的CS模式详细介绍

    Ubuntu16.04Docker的CS模式详细介绍

    这篇文章主要介绍了Ubuntu16.04Docker的CS模式详细介绍的相关资料,这里对Docker CS模式图文详细介绍,需要的朋友可以参考下
    2016-12-12
  • 解决docker pull被复位出现的问题

    解决docker pull被复位出现的问题

    这篇文章主要介绍了解决docker pull被复位出现的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 卸载Docker时遇到问题的解决方案

    卸载Docker时遇到问题的解决方案

    这篇文章主要介绍了卸载Docker时遇到问题的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • docker 搭建单机PostgreSQL操作详解

    docker 搭建单机PostgreSQL操作详解

    本文通过实际案例操作演示了如何基于Docker搭建pg的完整过程,并补充了pg数据库操作的常用命令和授权命令,感兴趣的朋友一起看看吧
    2025-04-04
  • docker对网络和程序速度的影响解读

    docker对网络和程序速度的影响解读

    本文通过对比分析,测试了在宿主机和Docker容器中部署Spring Boot程序的性能差异,在网络延迟方面,Docker容器比宿主机慢0.1~0.2毫秒,在程序运行速度方面,宿主机和Docker容器的平均运行时间相近,单次运行时间存在较大差异,无法确定Docker容器在速度上优于宿主机
    2025-01-01
  • 基于Maven+Docker的WebApp打包与部署全过程

    基于Maven+Docker的WebApp打包与部署全过程

    这篇文章主要介绍了基于Maven+Docker的WebApp打包与部署的相关资料,文中通过代码讲解了如何找到正确的JAR包、覆盖Docker使用的JAR、构建Docker镜像、解决Docker构建失败的问题以及在服务器上部署,需要的朋友可以参考下
    2026-02-02
  • Docker修改容器内部文件的3种简单方法

    Docker修改容器内部文件的3种简单方法

    docker容器化技术在打包生产和发布中占据着更高的地位,其高效简便很有亮点,下面这篇文章主要给大家介绍了关于Docker修改容器内部文件的3种简单方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • CentOS7.6系统下Docker安装部署教程

    CentOS7.6系统下Docker安装部署教程

    这篇文章主要为大家介绍了CentOS7.6系统下Docker的安装部署教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • docker使用http_proxy配置代理解决方法

    docker使用http_proxy配置代理解决方法

    这篇文章主要给大家介绍了关于docker使用http_proxy配置代理解决方法的相关资料,Docker HTTP(S) Proxy是一种在Docker容器内部设置 HTTP(S) 代理的方法,以便于容器内的应用程序可以方便地通过代理访问互联网,需要的朋友可以参考下
    2024-05-05
  • 关于docker部署fastapi项目以及日志挂载方式

    关于docker部署fastapi项目以及日志挂载方式

    这篇文章主要介绍了关于docker部署fastapi项目以及日志挂载方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论