Kutt短链接服务基于MariaDB的Docker部署指南
2025-07-06 06:48:07作者:胡唯隽
Kutt是一个现代化的开源短链接服务,支持自定义域名、统计分析和API访问等功能。本文将详细介绍如何使用Docker Compose配合MariaDB数据库来部署Kutt服务。
架构概述
Kutt的Docker部署方案采用了微服务架构,主要包含三个核心组件:
- Kutt主服务:提供短链接生成和管理功能的Web应用
- MariaDB数据库:存储短链接数据、用户信息等结构化数据
- Redis缓存:用于提高系统性能,处理高频访问
部署准备
在开始部署前,请确保已安装Docker和Docker Compose工具。本方案使用MariaDB 10作为数据库,相比MySQL有更好的性能和兼容性。
核心配置解析
1. Kutt主服务配置
server:
build:
context: .
volumes:
- custom:/kutt/custom
environment:
DB_CLIENT: mysql2
DB_HOST: mariadb
DB_PORT: 3306
REDIS_ENABLED: true
REDIS_HOST: redis
REDIS_PORT: 6379
ports:
- 3000:3000
depends_on:
mariadb:
condition: service_healthy
redis:
condition: service_started
关键点说明:
- 使用
mysql2
作为数据库客户端驱动 - 通过环境变量配置数据库和Redis连接信息
- 端口映射3000端口供外部访问
- 依赖服务启动条件确保服务启动顺序
2. MariaDB数据库配置
mariadb:
image: mariadb:10
restart: always
healthcheck:
test: ['CMD-SHELL', 'mysql ${DB_NAME} --user=${DB_USER} --password=${DB_PASSWORD} --execute "SELECT 1;"']
interval: 3s
retries: 5
start_period: 30s
volumes:
- db_data_mariadb:/var/lib/mysql
environment:
MARIADB_DATABASE: ${DB_NAME}
MARIADB_USER: ${DB_USER}
MARIADB_PASSWORD: ${DB_PASSWORD}
MARIADB_ROOT_PASSWORD: ${DB_PASSWORD}
expose:
- 3306
关键点说明:
- 使用MariaDB 10官方镜像
- 配置了健康检查确保数据库可用性
- 数据持久化到
db_data_mariadb
卷 - 通过环境变量配置数据库用户和密码
- 仅暴露3306端口给内部网络
3. Redis缓存配置
redis:
image: redis:alpine
restart: always
expose:
- 6379
关键点说明:
- 使用轻量级的Redis Alpine镜像
- 自动重启策略确保服务高可用
- 仅暴露6379端口给内部网络
部署步骤
-
创建
.env
文件,配置必要的环境变量:DB_NAME=kutt DB_USER=kutt DB_PASSWORD=your_strong_password
-
启动服务:
docker-compose -f docker-compose.mariadb.yml up -d
-
等待服务初始化完成,可通过以下命令查看日志:
docker-compose logs -f server
-
访问
http://localhost:3000
即可使用Kutt服务
数据持久化
配置中使用了两个卷确保数据安全:
db_data_mariadb
:存储MariaDB数据库文件custom
:存储Kutt的自定义配置和上传文件
性能优化建议
- 对于高并发场景,可以调整MariaDB的缓存参数
- 考虑为Redis配置持久化选项
- 根据负载情况调整Kutt实例的数量
常见问题解决
Q: 服务启动后无法连接数据库
A: 检查数据库健康状态:docker-compose ps
,确认数据库服务状态为healthy
Q: 如何备份数据
A: 使用docker-compose exec mariadb mysqldump -u kutt -p kutt > backup.sql
导出数据
通过本文介绍的Docker Compose方案,您可以快速部署一个高可用的Kutt短链接服务,MariaDB的稳定性和性能能够很好地满足生产环境需求。