【Docker项目实战】使用Docker部署Ticky任务管理工具
一、Ticky介绍
1.1 Ticky项目简介
Ticky
是一个基于 ASP. NET Core Blazor 构建的现代化、功能丰富的开源任务管理系统,采用看板(Kanban)风格界面,支持个人与团队高效管理项目和任务,永久免费且注重简洁性与易用性。
1.2 Ticky主要特点
- 项目管理:通过项目对看板进行分组和管理,便于组织多个工作流。
- 看板管理:创建和管理自定义看板,并可将常用看板设为收藏置顶。
- 模板功能:支持复制看板,方便将现有看板用作新项目的模板。
- 灵活列设置:每个看板可拥有任意数量的列,支持折叠、设置最大卡片数、自动完成和排序。
- 任务卡片:通过拖放方式创建、编辑和移动任务卡片,支持自定义新建卡片的默认位置。
- 子任务:将大任务拆分为可跟踪完成状态的子任务,提升任务管理粒度。
- 截止日期管理:为任务设置截止时间,并通过颜色标识提醒临近或超期任务。
- 时间追踪:内置计时器功能,记录在每个任务上花费的实际时间。
- 标签与优先级:使用自定义颜色标签和优先级等级对任务进行分类和排序。
- 文件附件:支持上传和管理与任务相关的文件,方便资料集中存储。
- 提醒功能:设置邮件提醒,确保关键任务不会被遗漏。
- 卡片关联:像 Jira 一样链接相关任务卡片,便于追踪依赖关系。
- 活动记录:自动追踪任务的所有操作历史,清晰了解变更过程。
- 评论系统:在卡片下添加评论,便于团队协作沟通或记录备注信息。
- 用户权限管理:支持在项目或看板级别添加用户并分配成员或管理员角色,可关闭注册功能。
- 管理员面板:提供后台管理界面,用于管理用户(尤其在无 SMTP 配置时)。
- 邮件通知:自动发送截止提醒和任务更新的电子邮件通知。
- 进度统计:可视化展示看板中已完成任务的比例,直观掌握整体进展。
- 全局搜索:通过唯一标识符(如 TEST-1)跨看板快速查找并跳转到指定卡片。
- 最近访问看板:一键返回最近操作的看板,提升使用效率。
- 自动生成头像(可选):为用户生成彩色头像,增强界面辨识度与趣味性。
- 离线运行支持:可完全离线部署,禁用外部服务(如头像、SMTP),所有资源本地化。
- 深色模式:提供护眼的深色主题,适应不同使用环境。
- 卡片暂存(Snooze):暂时隐藏尚未处理条件的任务卡片,减少干扰。
- 重复任务:设置周期性自动重复的任务,适用于日常或定期工作。
- 响应式设计:适配桌面与移动设备,随时随地访问任务系统。
- 完成特效:任务完成时触发庆祝彩带动画,增强成就感。
- 任务筛选:根据标签、优先级、截止日期等多种条件筛选和组织任务。
- Trello 数据导入:支持从 Trello 导入看板数据,并可映射成员至 Ticky 用户账户。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
---|---|---|---|---|---|
jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | Ticky | —— |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署开源Ticky任务管理工具。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-10-04 13:29:05 UTC; 2 days ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 888 (dockerd)
Tasks: 65
Memory: 1.2G (peak: 1.4G)
CPU: 3min 23.296s
CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取Ticky镜像
下载Ticky容器镜像,当前最新镜像版本为
v1.13.0
。
docker pull ghcr.io/dkorecko/ticky:v1.13.0
五、部署Ticky服务
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/ticky/data && cd /data/ticky
5.2 编辑部署文件
在部署目录下,创建docker-compose.yaml文件,内容如下所示:
vim docker-compose.yaml
services:
ticky-app:
image: ghcr.io/dkorecko/ticky:v1.13.0 # or pin to a specific version (like v1.0.0) for manual updates
container_name: ticky-app
ports:
- "7500:8080"
restart: unless-stopped
volumes:
- /data/ticky/data/uploaded:/app/wwwroot/uploaded
environment:
- DB_HOST=ticky-db
- DB_NAME=ticky # Database name, can be customized
- DB_USERNAME=ticky # Database username, can be customized
- DB_PASSWORD=admin123
#- FULLY_OFFLINE=true # Uncomment this if you want to disable the avatar service and run fully offline.
#- DISABLE_USER_SIGNUPS=true # Uncomment to disable user self-registration. When true, only admins can create new users via the Admin Panel.
- BASE_URL=http://192.168.3.88:7500 # Base URL for generating clickable links in emails (e.g., reminder emails). Change to the base URL you use to access Ticky.
- SMTP_ENABLED=false # Change this to false to ignore SMTP configuration and disable SMTP setup. Resetting password via typical password reset won't work (will need to be reset by an admin via the Admin Panel), as well as reminders and notifications. Can be enabled at any time.
- SMTP_HOST=your-smtp-host
- SMTP_PORT=your-smtp-port
- SMTP_DISPLAY_NAME=Ticky
- SMTP_EMAIL=your-email@example.com
- SMTP_USERNAME=your-smtp-username
- SMTP_PASSWORD=your-smtp-password
- SMTP_SECURITY=true
depends_on:
ticky-db:
condition: service_healthy
ticky-db:
image: mysql:8
container_name: ticky-db
restart: unless-stopped
environment:
MYSQL_DATABASE: ticky # This should match DB_NAME in ticky-app container
MYSQL_USER: ticky # This should match DB_USERNAME in ticky-app container
MYSQL_ROOT_PASSWORD: admin123
MYSQL_PASSWORD: admin123 # This should match DB_PASSWORD
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 2s
retries: 30
volumes:
- /data/ticky/data/mysql:/var/lib/mysql
✅ ticky-app
容器环境变量说明
环境变量 | 说明 | 是否必需 | 示例值 |
---|---|---|---|
DB_HOST |
数据库服务的主机名(Docker 服务名),用于连接 MySQL 数据库。 | ✅ 是 | ticky-db |
DB_NAME |
Ticky 使用的数据库名称,必须与 ticky-db 容器中的 MYSQL_DATABASE 一致。 |
✅ 是 | ticky |
DB_USERNAME |
连接数据库的用户名,必须与 ticky-db 中的 MYSQL_USER 一致。 |
✅ 是 | ticky |
DB_PASSWORD |
连接数据库的用户密码,必须与 ticky-db 中的 MYSQL_PASSWORD 一致。 |
✅ 是 | admin123 |
BASE_URL |
Ticky 实例的访问地址,用于生成邮件中的链接(如提醒、通知等)。即使禁用 SMTP 也建议设置正确。 | ✅ 是 | http://localhost:7500 |
SMTP_ENABLED |
是否启用 SMTP 邮件功能: - true :启用,需配置后续 SMTP 参数;- false :禁用,无法使用密码重置、提醒、通知等功能。 |
✅ 是 | false |
SMTP_HOST |
SMTP 邮件服务器地址(如 Gmail 为 smtp.gmail.com )。仅在 SMTP_ENABLED=true 时生效。 |
❌ 否(启用时必填) | smtp.example.com |
SMTP_PORT |
SMTP 服务器端口(如 587 为 TLS,465 为 SSL)。 | ❌ 否 | 587 |
SMTP_DISPLAY_NAME |
邮件发件人显示名称,在收件箱中看到的发送者名字。 | ❌ 否 | Ticky |
SMTP_EMAIL |
发送邮件所使用的邮箱地址。 | ❌ 否 | ticky@example.com |
SMTP_USERNAME |
SMTP 登录用户名,通常与邮箱地址相同。 | ❌ 否 | ticky@example.com |
SMTP_PASSWORD |
SMTP 授权密码或应用专用密码(注意:不是邮箱登录密码)。 | ❌ 否 | your-app-password |
SMTP_SECURITY |
是否启用加密连接: - true :启用(推荐,使用 STARTTLS 或 SSL);- false :不加密(不推荐)。 |
❌ 否 | true |
FULLY_OFFLINE |
可选:设置为 true 时,禁用头像服务,所有资源本地化,支持完全离线运行。 |
❌ 否 | true |
DISABLE_USER_SIGNUPS |
可选:设置为 true 时,关闭用户自注册功能,仅管理员可通过“管理面板”创建用户。 |
❌ 否 | true |
💡 提示:
- 若设置
SMTP_ENABLED=false
,则无需填写 SMTP 相关变量,但将无法使用:
- 用户自注册(需管理员手动创建)
- 密码找回功能(需管理员重置)
- 邮件提醒与通知
BASE_URL
应设置为实际访问 Ticky 的 URL(如http://192.168.3.88:7500
),将IP替换为自己服务器IP或者访问域名地址,否则邮件中的链接会失效。
✅ ticky-db
容器环境变量说明(MySQL 8)
环境变量 | 说明 | 是否必需 | 示例值 |
---|---|---|---|
MYSQL_DATABASE |
初始化时创建的数据库名称,必须与 ticky-app 中的 DB_NAME 相同。 |
✅ 是 | ticky |
MYSQL_USER |
数据库普通用户,用于 Ticky 应用连接,必须与 ticky-app 中的 DB_USERNAME 一致。 |
✅ 是 | ticky |
MYSQL_PASSWORD |
上述用户的密码,必须与 ticky-app 中的 DB_PASSWORD 一致。 |
✅ 是 | admin123 |
MYSQL_ROOT_PASSWORD |
数据库 root 用户的密码,用于数据库管理维护。建议设为强密码。 | ✅ 是 | admin123 |
⚠️ 注意:
- 所有密码应避免使用弱密码(如
123
、password
),生产环境建议使用强密码。- 数据库数据通过卷挂载(
/data/ticky/data/mysql
)持久化,防止容器删除后数据丢失。- 健康检查确保
ticky-app
在数据库准备就绪后再启动。
5.3 创建Ticky容器
执行以下命令,创建Ticky容器。
docker compose up -d
5.4 查看Ticky容器状态
检查Ticky容器运行状态,确保Ticky容器正常启动。
root@jeven:/data/ticky# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ticky-app ghcr.io/dkorecko/ticky:v1.13.0 "dotnet Ticky.Web.dll" ticky-app 2 minutes ago Up About a minute 0.0.0.0:7500->8080/tcp, [::]:7500->8080/tcp
ticky-db mysql:8 "docker-entrypoint.s…" ticky-db 2 minutes ago Up 2 minutes (healthy) 3306/tcp, 33060/tcp
5.5 检查Ticky容器日志
检查容器运行日志,确保Ticky服务正常运行。
docker compose logs
六、访问Ticky服务
6.1 访问Ticky初始页
浏览器地址:
http ://<个人的服务器IP>:7500
,访问Ticky初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。
6.2 登录Ticky
默认登录凭证:
- 默认的管理员账户: admin@ticky. com ;
- 密码: abc123
使用默认账号登录后,我们自行修改该账号密码,修改后,点击保存重新登录。
6.3 创建任务看板
创建项目:点击Ticky主页的右上角的“New Project”选项进行创建项目。
填写看板名称等信息,如下所示:
在看板中,我们新建任务状态(列),一般常用的也就是 To Do、Doing 和 Done。在每个列表下,我们新建子任务,效果如下所示:
七、总结
通过本次实践,我们成功使用Docker部署了轻量且功能丰富的任务管理工具Ticky。整个部署过程简洁高效,得益于Docker容器化技术,实现了应用与环境的快速隔离与运行。Ticky的看板式任务管理界面直观,支持多种实用功能,非常适合个人或团队进行项目协作。未来可进一步探索其模板、时间追踪和权限管理等高级功能,提升工作效率。
- 点赞
- 收藏
- 关注作者
评论(0)