Dinky项目Docker部署完全指南
前言
Dinky作为一款开源的实时计算平台,提供了强大的Flink作业开发和管理能力。本文将详细介绍如何通过Docker快速部署Dinky项目,涵盖多种部署场景和配置方式,帮助开发者快速搭建开发测试环境。
部署方式概览
Dinky提供了三种主要的Docker部署方式:
- Standalone模式:使用内置H2数据库快速启动
- 外部数据库模式:连接已有的MySQL或PostgreSQL数据库
- docker-compose模式:一键部署完整环境(包含Flink集群)
环境准备
在开始部署前,请确保满足以下条件:
- Docker 1.13.1或更高版本
- Docker Compose 1.28.0或更高版本(如需使用docker-compose部署)
- 至少4GB可用内存(推荐8GB以上以获得更好体验)
Standalone模式部署
使用H2数据库快速启动
docker run --restart=always -p 8888:8888 --name dinky dinkydocker/dinky-standalone-server:1.1.0-flink1.17
特点:
- 最简单快捷的部署方式
- 内置H2数据库,无需额外配置
- 适合快速体验和测试环境
- 数据不会持久化,容器删除后数据会丢失
使用外部MySQL数据库
docker run --restart=always -p 8888:8888 \
--name dinky \
-e DB_ACTIVE=mysql \
-e MYSQL_ADDR=127.0.0.1:3306 \
-e MYSQL_DATABASE=dinky \
-e MYSQL_USERNAME=dinky \
-e MYSQL_PASSWORD=dinky \
-v /opt/lib:/opt/dinky/customJar/ \
dinkydocker/dinky-standalone-server:1.1.0-flink1.17
注意事项:
- 由于MySQL与Apache 2.0协议不兼容,Dinky默认不提供MySQL驱动
- 需要手动提供MySQL驱动jar包并挂载到
/opt/dinky/customJar/目录 - 建议使用MySQL 5.7或8.0版本
使用外部PostgreSQL数据库
docker run --restart=always -p 8888:8888 \
--name dinky \
-e DB_ACTIVE=pgsql \
-e POSTGRES_ADDR=127.0.0.1:5432 \
-e POSTGRES_DATABASE=dinky \
-e POSTGRES_USERNAME=dinky \
-e POSTGRES_PASSWORD=dinky \
-v /opt/lib:/opt/dinky/customJar/ \
dinkydocker/dinky-standalone-server:1.1.0-flink1.17
特点:
- 适合生产环境使用
- 数据持久化,可靠性高
- 支持PostgreSQL 9.6及以上版本
docker-compose模式部署
docker-compose方式可以一键部署完整的Dinky环境,包括Flink集群,适合需要完整功能体验的场景。
部署步骤
- 获取部署文件
cd deploy/docker/
- 修改
.env配置文件(可选)
# 定义Dinky版本号
DINKY_VERSION=1.0.3
# 定义Flink版本(不要写小版本号)
FLINK_VERSION=1.17
# 自定义jar包依赖本地路径(例如:mysql驱动)
CUSTOM_JAR_PATH=/opt/dinky/extends/
# 使用哪种数据库,默认h2
DB_ACTIVE=h2
# h2数据库持久化文件路径
H2_DB=./tmp/db/h2
# 时区设置
TZ=Asia/Shanghai
# 自带Flink集群配置
FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager"
- 启动服务
docker-compose up -d
配置说明
- 数据库配置:支持H2、MySQL和PostgreSQL三种数据库
- Flink版本:可根据需要修改FLINK_VERSION变量
- 时区设置:默认为Asia/Shanghai,可根据实际情况调整
- 自定义JAR:通过CUSTOM_JAR_PATH指定外部依赖路径
本地开发模式
对于开发者,可以使用以下命令构建并运行开发环境:
docker compose --profile standalone -f docker-compose.yml -f docker-compose.dev.yml up
如果需要前后端分离开发,可使用:
docker compose --profile ms -f docker-compose.yml -f docker-compose.dev.yml up
注意事项:
- 对于Flink 1.15及以上版本,需要手动调整planner jar包
- 可通过映射/opt/dinky/customJar目录添加自定义jar包
Nginx配置指南
Dinky 1.0-1.1版本配置
这些版本使用SSE技术进行日志推流,需要配置Nginx支持:
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
Dinky 1.2+版本配置
新版本使用Websocket技术,需要添加以下配置:
location /api/ws/global {
proxy_pass ${后端地址};
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $http_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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
location /ws/sql-gateway/ {
proxy_pass ${后端地址};
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $http_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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
同时需要在http节点添加:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
常见问题解决
- MySQL连接问题:确保已正确挂载MySQL驱动jar包
- Websocket连接失败:检查Nginx配置是否正确
- Flink版本兼容性:确保Dinky版本与Flink版本匹配
- 时区问题:通过TZ环境变量设置正确的时区
总结
本文详细介绍了Dinky项目的多种Docker部署方式,从最简单的Standalone模式到完整的docker-compose部署,涵盖了开发和生产环境的不同需求。通过合理的配置,可以快速搭建稳定可靠的Dinky环境,为实时计算任务提供强大支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



