首页
/ Kutt短链接服务基于MariaDB的Docker部署指南

Kutt短链接服务基于MariaDB的Docker部署指南

2025-07-06 06:48:07作者:胡唯隽

Kutt是一个现代化的开源短链接服务,支持自定义域名、统计分析和API访问等功能。本文将详细介绍如何使用Docker Compose配合MariaDB数据库来部署Kutt服务。

架构概述

Kutt的Docker部署方案采用了微服务架构,主要包含三个核心组件:

  1. Kutt主服务:提供短链接生成和管理功能的Web应用
  2. MariaDB数据库:存储短链接数据、用户信息等结构化数据
  3. 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端口给内部网络

部署步骤

  1. 创建.env文件,配置必要的环境变量:

    DB_NAME=kutt
    DB_USER=kutt
    DB_PASSWORD=your_strong_password
    
  2. 启动服务:

    docker-compose -f docker-compose.mariadb.yml up -d
    
  3. 等待服务初始化完成,可通过以下命令查看日志:

    docker-compose logs -f server
    
  4. 访问http://localhost:3000即可使用Kutt服务

数据持久化

配置中使用了两个卷确保数据安全:

  • db_data_mariadb:存储MariaDB数据库文件
  • custom:存储Kutt的自定义配置和上传文件

性能优化建议

  1. 对于高并发场景,可以调整MariaDB的缓存参数
  2. 考虑为Redis配置持久化选项
  3. 根据负载情况调整Kutt实例的数量

常见问题解决

Q: 服务启动后无法连接数据库 A: 检查数据库健康状态:docker-compose ps,确认数据库服务状态为healthy

Q: 如何备份数据 A: 使用docker-compose exec mariadb mysqldump -u kutt -p kutt > backup.sql导出数据

通过本文介绍的Docker Compose方案,您可以快速部署一个高可用的Kutt短链接服务,MariaDB的稳定性和性能能够很好地满足生产环境需求。