已通过VM Cron实现Mastodon自动缓存删除,求容器内实现方案
Mastodon容器内实现缓存自动删除的方法
方法1:容器内部配置Cron任务
适用于希望将定时任务完全封装在容器内的场景:
- 进入Mastodon应用容器(替换为你的实际容器名,比如
mastodon-web):docker exec -it mastodon-web /bin/bash - 安装cron(基于Debian/Ubuntu镜像的容器执行以下命令):
apt update && apt install -y cron - 创建缓存清理脚本,比如
/opt/mastodon/clean_cache.sh:#!/bin/bash # 清理public/assets下超过7天的缓存文件,可按需调整路径和过期时间 find /opt/mastodon/public/assets -type f -mtime +7 -delete # 若需清理Redis缓存,添加以下命令(替换Redis地址,同网络下可直接用服务名) # redis-cli -h redis FLUSHDB - 给脚本添加执行权限:
chmod +x /opt/mastodon/clean_cache.sh - 编辑crontab配置定时任务:
crontab -e
添加规则(示例为每天凌晨2点执行):0 2 * * * /opt/mastodon/clean_cache.sh >> /var/log/mastodon_cache_clean.log 2>&1 - 启动cron服务并设置开机自启:
service cron start && update-rc.d cron enable
方法2:宿主机Cron调用容器内命令
无需修改容器内部,适合轻量化场景:
- 在宿主机执行
crontab -e,添加定时任务,直接通过docker exec调用容器内的清理命令:0 2 * * * docker exec mastodon-web find /opt/mastodon/public/assets -type f -mtime +7 -delete >> /var/log/mastodon_cache_clean.log 2>&1 - 同样可按需调整清理路径、过期时间,或添加Redis缓存清理命令。
注意事项
- 根据你的Mastodon部署结构,调整缓存文件的实际存储路径(比如
public/packs也可能有缓存文件) - 清理Redis缓存前请确认业务影响,避免误删关键数据
- 定期清理任务日志文件,防止占用过多磁盘空间
内容的提问来源于stack exchange,提问作者Dmitry Merkulov
相关产品推荐
相关产品推荐

