SQLynx(原名 SQL Studio)是一款功能强大的跨平台数据库管理工具,支持 MySQL、PostgreSQL、ClickHouse 等多种数据源。将其部署在 Docker 容器中,不仅可以快速获得开箱即用的 Web 服务,还能实现环境一致性、简化运维管理。
本教程将带您通过 Docker Compose 实现 SQLynx 的标准化部署,涵盖从环境准备到日常运维的全流程。
部署准备
在开始之前,请确保您的服务器满足以下条件:
- 操作系统:Linux (如 Ubuntu 20.04+ / CentOS 7+)、macOS 或 Windows (WSL2)
- Docker:版本 20.10 及以上
- Docker Compose:版本 2.0 及以上 (建议使用 docker compose 插件)
- 端口要求:18888 端口未被占用 (可自定义)
部署步骤
1. 创建目录结构
为了数据持久化和日志管理,首先在宿主机上创建挂载目录:
# 创建统一的应用目录
mkdir -p /data/sqlynx/{data,log}
cd /data/sqlynx
# 设置目录权限
chmod -R 777 /data/sqlynx2. 编写 docker-compose.yml 文件
在当前目录下创建 docker-compose.yml 文件:
version: '3.8'
services:
sqlynx:
image: sqlynx/sql-front:latest
container_name: sqlynx
restart: always
ports:
- "18888:18888"
environment:
# 数据库连接配置(可选,用于存储SQLynx自身的元数据)
# 如果不配置,默认使用内置H2数据库
- DATASOURCE_HOST=your-mysql-host
- DATASOURCE_PORT=3306
- DATASOURCE_DATABASE=sqlynx_meta
- DATASOURCE_USERNAME=root
- DATASOURCE_PASSWORD=your-password
# 时区设置
- TZ=Asia/Shanghai
volumes:
# 持久化数据文件
- /data/sqlynx/data:/opt/sqlynx/data
# 持久化日志文件
- /data/sqlynx/log:/opt/sqlynx/log
networks:
- sqlynx-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:18888/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
sqlynx-network:
driver: bridge3. 使用外部数据库存储元数据(可选但推荐)
如果希望使用 MySQL 作为 SQLynx 的元数据库,可以额外部署一个 MySQL 容器:
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: sqlynx-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root123456
MYSQL_DATABASE: sqlynx_meta
MYSQL_USER: sqlynx
MYSQL_PASSWORD: sqlynx123
volumes:
- /data/sqlynx/mysql:/var/lib/mysql
networks:
- sqlynx-network
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
sqlynx:
image: sqlynx/sql-front:latest
container_name: sqlynx
restart: always
ports:
- "18888:18888"
depends_on:
mysql:
condition: service_healthy
environment:
- DATASOURCE_HOST=mysql
- DATASOURCE_PORT=3306
- DATASOURCE_DATABASE=sqlynx_meta
- DATASOURCE_USERNAME=sqlynx
- DATASOURCE_PASSWORD=sqlynx123
- TZ=Asia/Shanghai
volumes:
- /data/sqlynx/data:/opt/sqlynx/data
- /data/sqlynx/log:/opt/sqlynx/log
networks:
- sqlynx-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:18888/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
sqlynx-network:
driver: bridge4. 启动服务
执行以下命令启动容器:
# 启动服务
docker compose up -d
# 查看容器运行状态
docker compose ps
# 查看日志
docker compose logs -f5. 验证部署
启动完成后,通过浏览器访问:http://服务器IP:18888
默认登录信息:
- 用户名:admin
- 密码:admin
首次登录后请及时修改默认密码。
配置说明
环境变量详解
| 变量名 | 说明 | 默认值 |
|---|---|---|
| DATASOURCE_HOST | 元数据库主机地址 | 空(使用H2) |
| DATASOURCE_PORT | 元数据库端口 | 3306 |
| DATASOURCE_DATABASE | 元数据库名称 | sqlynx_meta |
| DATASOURCE_USERNAME | 元数据库用户名 | root |
| DATASOURCE_PASSWORD | 元数据库密码 | 空 |
| TZ | 时区设置 | Asia/Shanghai |
数据持久化说明
/data/sqlynx/data:存放用户数据、缓存文件等/data/sqlynx/log:存放应用运行日志/data/sqlynx/mysql:如果使用独立MySQL,存放MySQL数据文件
日常运维
1. 查看日志
# 实时查看日志
docker compose logs -f
# 查看最近100行日志
docker compose logs --tail=1002. 备份数据
# 备份应用数据
tar -czf sqlynx-backup-$(date +%Y%m%d).tar.gz /data/sqlynx
# 如果使用独立MySQL,备份数据库
docker exec sqlynx-mysql mysqldump -u root -p sqlynx_meta > backup.sql3. 升级版本
# 拉取最新镜像
docker compose pull
# 重新创建容器
docker compose up -d --force-recreate4. 停止与删除
# 停止服务
docker compose down
# 停止服务并删除数据卷(谨慎操作)
docker compose down -v安全配置建议
- 修改默认密码:首次登录后立即修改admin密码
- 使用HTTPS:建议前置Nginx反向代理,配置SSL证书
- 限制访问IP:在防火墙层面限制18888端口的访问来源
- 定期备份:设置定时任务备份数据和元数据库
- 最小权限原则:为元数据库创建专用账号,只授予必要权限
常见问题排查
容器无法启动
# 查看详细错误
docker compose logs sqlynx
# 检查端口占用
netstat -tlnp | grep 18888无法连接外部数据库
- 确认数据库账号有远程访问权限
- 检查网络连通性:
docker exec sqlynx ping mysql - 验证防火墙设置
数据卷权限问题
如果遇到文件写入权限错误:
# 重新设置权限
chmod -R 777 /data/sqlynx
# 查看当前用户ID,确保与容器内用户一致
id总结
通过 Docker 容器化部署 SQLynx,我们实现了:
- 标准化的部署流程
- 数据与配置的持久化
- 便捷的版本升级
- 统一的日志管理
这种部署方式特别适合需要快速搭建数据库管理平台、多环境部署一致的场景。根据实际需求,可以选择使用内置H2数据库或外部MySQL作为元数据存储,后者更适合生产环境使用。
暂无评论