文字表达能力
今天看到这个 帖子 ,很有感触。现在很多工作为了快,都是先用 AI 打个底稿,再人工优化。久而久之写作水平就下降了。 此前一直想要多写点东西,但总是拘泥于形式不敢下手。现在看来再不下手就晚了,敢在自己写作水平下降之前多写点东西。无所谓什么,写就是了。
探索手机发送公众号的工作流
先用最简单的方式跑通,比如今天这个。
今天看到这个 帖子 ,很有感触。现在很多工作为了快,都是先用 AI 打个底稿,再人工优化。久而久之写作水平就下降了。 此前一直想要多写点东西,但总是拘泥于形式不敢下手。现在看来再不下手就晚了,敢在自己写作水平下降之前多写点东西。无所谓什么,写就是了。
先用最简单的方式跑通,比如今天这个。

随着 Heroku 免费套餐的终止,开发者们纷纷寻找新的云部署解决方案。本文将深入对比 Railway、Render 以及其他主流平台,帮你选择最适合项目需求的部署方案。
Railway 是一个注重开发者体验的现代化平台,强调快速部署和简洁界面。它采用用量计费模式,通过直观的可视化画布管理基础设施。
核心优势:
Render 定位为生产就绪的云平台,提供结构化的基础设施管理和可预测的定价模式。
核心优势:
| 功能特性 | Railway | Render | Vercel | Fly.io | DigitalOcean | Heroku |
|---|---|---|---|---|---|---|
| 免费套餐 | ❌ 已取消 | ✅ 750小时/月 | ✅ 静态站点 | ✅ 基础用量 | ✅ 3个静态应用 | ❌ 已取消 |
| 定价模式 | 用量计费 | 实例计费 | 请求计费 | 用量计费 | 混合计费 | 实例计费 |
| 起步价格 | $5/月+用量 | $7/月 | $20/月 | $5/月 | $5/月 | $7/月 |
| 自动扩展 | ✅ 动态资源分配 | ✅ 手动配置 | ✅ 边缘计算 | ✅ 多区域 | ✅ 垂直/水平 | ✅ 传统扩展 |
| 后台任务 | ⚠️ 需手动配置 | ✅ 原生支持 | ❌ 无 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 数据库 | ✅ 多种数据库 | ✅ PostgreSQL/Redis | ❌ 外部集成 | ✅ 卷存储 | ✅ 托管数据库 | ✅ 丰富插件 |
| 多区域部署 | ✅ 全球边缘 | ⚠️ 有限区域 | ✅ 全球 CDN | ✅ 多区域优势 | ✅ 多数据中心 | ✅ 多区域 |
| 容器支持 | ✅ Docker | ✅ Docker | ⚠️ 轻量容器 | ✅ 全容器化 | ✅ Docker | ✅ 容器 |
| CI/CD | ✅ Git 集成 | ✅ Git 集成 | ✅ Git 集成 | ✅ CLI 驱动 | ✅ Git 集成 | ✅ Git 集成 |
| 监控日志 | ✅ 基础监控 | ✅ 详细日志 | ✅ 分析工具 | ✅ CLI 工具 | ✅ 完整监控 | ✅ 日志聚合 |
| 语言/技术 | Railway | Render | Vercel | Fly.io | DigitalOcean | Heroku |
|---|---|---|---|---|---|---|
| JavaScript/Node.js | ✅ 完全支持 | ✅ 完全支持 | ✅ 原生优化 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| TypeScript | ✅ 完全支持 | ✅ 完全支持 | ✅ 原生支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| Python | ✅ Django/Flask | ✅ Django/Flask | ⚠️ 社区运行时 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| Go | ✅ 完全支持 | ✅ 完全支持 | ⚠️ 社区运行时 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| Rust | ✅ 完全支持 | ✅ 完全支持 | ⚠️ 社区运行时 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| Java | ✅ Spring Boot | ✅ Spring Boot | ❌ 不支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| PHP | ✅ Laravel | ✅ 完全支持 | ⚠️ 社区运行时 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| Ruby | ✅ Rails | ✅ Rails | ❌ 不支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| C#/.NET | ✅ ASP.NET Core | ✅ 完全支持 | ❌ 不支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| Elixir | ✅ Phoenix | ✅ Phoenix | ❌ 不支持 | ✅ 完全支持 | ✅ 完全支持 | ✅ 完全支持 |
| Dart | ✅ 支持 | ⚠️ 有限 | ❌ 不支持 | ✅ 支持 | ⚠️ 有限 | ⚠️ 有限 |
| 框架 | Railway | Render | Vercel | Fly.io | DigitalOcean | 最佳选择 |
|---|---|---|---|---|---|---|
| React | ✅ | ✅ | ✅ 原生优化 | ✅ | ✅ | Vercel |
| Next.js | ✅ | ✅ | ✅ 官方框架 | ✅ | ✅ | Vercel |
| Vue.js | ✅ | ✅ | ✅ | ✅ | ✅ | Railway/Render |
| Nuxt.js | ✅ | ✅ | ✅ 优化 | ✅ | ✅ | Vercel |
| Svelte | ✅ | ✅ | ✅ | ✅ | ✅ | Railway/Render |
| SvelteKit | ✅ | ✅ | ✅ 优化 | ✅ | ✅ | Vercel |
| Angular | ✅ | ✅ | ✅ | ✅ | ✅ | Railway/Render |
| Astro | ✅ | ✅ | ✅ 优化 | ✅ | ✅ | Vercel |
| 框架 | Railway | Render | Vercel | Fly.io | DigitalOcean | 推荐理由 |
|---|---|---|---|---|---|---|
| Express.js | ✅ 优秀 | ✅ 优秀 | ✅ 函数形式 | ✅ 优秀 | ✅ 优秀 | 全平台通用 |
| FastAPI | ✅ 优秀 | ✅ 优秀 | ⚠️ 有限 | ✅ 优秀 | ✅ 优秀 | Railway/Render |
| Django | ✅ 优秀 | ✅ 优秀 | ❌ 不支持 | ✅ 优秀 | ✅ 优秀 | Railway/Render |
| Flask | ✅ 优秀 | ✅ 优秀 | ⚠️ 函数形式 | ✅ 优秀 | ✅ 优秀 | Railway/Render |
| Spring Boot | ✅ 优秀 | ✅ 优秀 | ❌ 不支持 | ✅ 优秀 | ✅ 优秀 | Railway/Fly.io |
| Rails | ✅ 优秀 | ✅ 优秀 | ❌ 不支持 | ✅ 优秀 | ✅ 优秀 | Railway/Render |
| Laravel | ✅ 优秀 | ✅ 优秀 | ⚠️ 社区 | ✅ 优秀 | ✅ 优秀 | Railway/Render |
| ASP.NET Core | ✅ 优秀 | ✅ 优秀 | ❌ 不支持 | ✅ 优秀 | ✅ 优秀 | Railway/Fly.io |
| Phoenix | ✅ 优秀 | ✅ 优秀 | ❌ 不支持 | ✅ 优秀 | ✅ 优秀 | Fly.io |
| 数据库 | Railway | Render | Vercel | Fly.io | DigitalOcean |
|---|---|---|---|---|---|
| PostgreSQL | ✅ 托管服务 | ✅ 托管服务 | 🔗 外部集成 | ✅ 卷存储 | ✅ 托管服务 |
| MySQL | ✅ 托管服务 | ⚠️ 外部 | 🔗 外部集成 | ✅ 卷存储 | ✅ 托管服务 |
| MongoDB | ✅ 托管服务 | ⚠️ 手动配置 | 🔗 外部集成 | ✅ 卷存储 | ✅ 托管服务 |
| Redis | ✅ 托管服务 | ✅ 托管服务 | 🔗 外部集成 | ✅ 卷存储 | ✅ 托管服务 |
| SQLite | ✅ 卷存储 | ✅ 卷存储 | ❌ 不支持 | ✅ 卷存储 | ✅ 卷存储 |
试用计划:$5 一次性额度(30天有效)
爱好计划:$5/月 + 用量费用
专业计划:$20/月 + 用量费用
用量计费:
- CPU:$20/CPU/月
- 内存:$10/GB/月
- 网络:$0.10/GB
免费计划:750实例小时/月(15分钟无活动后休眠)
入门计划:$7/月(512MB RAM,0.5 CPU)
标准计划:$25/月(2GB RAM,1 CPU)
专业计划:$85/月(8GB RAM,4 CPU)
Hobby:免费(100万请求/月)
Pro:$20/月/用户(更高限额)
Team:$40/月/用户(团队协作)
Enterprise:自定义定价
免费额度:3个共享CPU实例 + 3GB持久存储
付费:按实际用量计费
- CPU:约$0.02/CPU小时
- 内存:约$0.0015/MB小时
免费:3个静态站点应用
基础:$5/月起(共享CPU)
专业:$12/月起(专用CPU)
企业:自定义配置
✅ 最适合:
🔧 技术栈优势:
❌ 不适合:
✅ 最适合:
🔧 技术栈优势:
❌ 不适合:
✅ 最适合:
🔧 技术栈优势:
❌ 不适合:
✅ 最适合:
🔧 技术栈优势:
❌ 不适合:
✅ 最适合:
🔧 技术栈优势:
❌ 不适合:
2025年云部署平台选择策略:
🎯 快速开始和原型验证:选择 Railway
🏭 生产环境和企业应用:选择 Render
🚀 前端和静态网站:选择 Vercel
🌍 全球化和性能优先:选择 Fly.io
💰 预算敏感的项目:选择 DigitalOcean App Platform
最终建议:
🎯 按技术栈选择:
📊 按项目规模选择:
🚀 按开发阶段选择:
选择平台时,请综合考虑项目的技术栈、团队熟悉度、预算约束和长期技术发展规划。建议先在免费套餐上测试主要功能,确认技术栈兼容性后再做最终决定。
进入群晖终端执行这个:
sudo vim /volume1/@appdata/syncthing/config.xml
将其中的 password 这一行删掉即可,注意备份。
大模型的能力越来越强,但是如何发挥大模型真正的实力?
这是我一直在思考的问题,在平常的使用过程中很容易发现,提示词的使用技巧对于生成结果的质量至关重要。多看看优秀的提示词,还能启发我们利用大模型的更多用法。
在网上看到许多优秀的提示词仓库,但一般都是针对某个模型或场景的,一直想整理一个更方便易读,根据模态、模型分类,从各处搜集优秀的提示词汇集到一处的仓库。
于是最近制作了这个网站:https://prmbr.com/
一个精选提示词库,包括 Text-To-Text, Text-To-Image, Text-To-Video 等提示词用法,还有针对 Nano Banana GPT-Image-1 等模型的专门分区,内容全部来自于各大开源的 Prompt 仓库、社交媒体、网站,以及我在各种地方偶然看到的内容。
初期内容还比较有限,后期逐渐完善,分享给大家。
代码仓库已经开源,可以参与共建:https://github.com/songtianlun/awesome-prompts
Playwright MCP 是一个模型上下文协议(MCP)服务器,使用 Playwright 提供浏览器自动化功能。该服务器使 LLM 能够通过结构化的可访问性快照与网页交互,从而绕过对屏幕截图或视觉调整模型的需求。
以 codex 为例,创建或编辑配置文件 ~/.codex/config.toml 并添加:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
现在使用 ncdu 的话,只需要执行一次就可以查询目录大小并排序,且删除文件也很方便,不会出错。
安装:
# ubuntu
sudo apt install ncdu
# centos
sudo yum install ncdu
# macOS
brew install ncdu
使用
# 统计当前所在目录及子目录的文件占用情况
ncdu
# 统计指定的 /data 目录
ncdu /data
# 将 /data 目录的情况输出到 ~/ncdu.txt
ncdu /data -o ~/ncdu.txt
# 加载本地根据,而不是进行实时统计
ncdu -f ~/ncdu.txt
从学 GIS 开始,就一直想做/找一个地图兴趣点标记、分享软件。之前也做过,但是苦于时间、运维成本太高,就只能放在那里了。直到最近发现自己总是会碰到这种,需要标记和分享兴趣点的需求。特别是多点规划、形成规划的时候,有一个这样的软件比直接看地图要方便太多。
依稀记得之前用过一个 exping,但是遗憾的发现已经于 2024年12月31日停止服务 了,很可惜,但也在意料之中吧。因为这个软件虽然设计很好,但是一直以来都感觉卡卡的,动画很不流畅,即使在 2025年的今天打开也是如此。所以也不意外吧。这是一个小众的需求,但是投入了太多的成本,做了一个太重的东西出来。
今天用 Claude 分析了类似的地图标记和兴趣点分享软件,感觉分析的不错,基本我了解到的就是这些,就在此记录一下。
1. 识途(微信小程序)
已更名为 路敢敢 ,初步看了一下体验不错,后续考虑用一下。
- 提供地图定位、路线规划、在线协作、美好瞬间个性化标记等实用功能,每一次创作的计划可以通过发布社区分享出去
- 微信小程序,使用便捷
2. 飞鸿踏雪
3. 兰图绘
4. 钉图易
5. Google My Maps
6. Google Earth
7. 图新地球
最接近exping的替代品应该是识途(微信小程序)和飞鸿踏雪,它们都支持个人创作、社区分享,以及丰富的标记功能。
本为开头和结尾非 AI 生成。 目前看最好用的应该是 识途(微信小程序),后续考虑用一下。这种需求在微信生态下应该是最合适的,很方便分享,也不需要考虑多端兼容问题。也算是一个技术选型的典范了吧。
最近内部 gitlab 某些项目打开就 500 了, 看 gitlab 报错日志如下:
gitlab | {"method":"GET","path":"/xxx/xxx","format":"html","controller":"ProjectsController","action":"show","status":500,"time":"2025-08-28T00:51:41.511Z","params":[{"key":"namespace_id","value":"xxx"},{"key":"id","value":"xxx"}],"remote_ip":"10.17.7.63","user_id":74,"username":"xxxgitlab | {"method":"GET","path":"/xxx/xxx","format":"html","controller":"ProjectsController","action":"show","status":500,"time":"2025-08-28T00:51:41.511Z","params":[{"key":"namespace_id","value":"xxx"},{"key":"id","value":"xxx"}],"remote_ip":"10.17.7.63","user_id":74,"username":"xxx","ua":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","correlation_id":"01K3Q2F5DXP8Y33B25TW9SSMYM","meta.user":"xxx","meta.project":"xxx/xxx","meta.root_namespace":"storage","meta.caller_id":"ProjectsController#show","meta.remote_ip":"10.17.7.63","meta.feature_category":"projects","meta.client_id":"user/74","redis_calls":21,"redis_duration_s":0.007123,"redis_read_bytes":2997,"redis_write_bytes":2370,"redis_cache_calls":20,"redis_cache_duration_s":0.006591,"redis_cache_read_bytes":2816,"redis_cache_write_bytes":1035,"redis_shared_state_calls":1,"redis_shared_state_duration_s":0.000532,"redis_shared_state_read_bytes":181,"redis_shared_state_write_bytes":1335,"db_count":41,"db_write_count":0,"db_cached_count":10,"cpu_s":2.291446,"mem_objects":394125,"mem_bytes":52397272,"mem_mallocs":198648,"mem_total_bytes":68162272,"queue_duration_s":0.009214,"exception.class":"Rack::Timeout::RequestTimeoutException","exception.message":"Request ran for longer than 60000ms","exception.backtrace":["lib/gitlab/url_blocker.rb:113:in `getaddrinfo'","lib/gitlab/url_blocker.rb:113:in `get_address_info'","lib/gitlab/url_blocker.rb:48:in `validate!'","app/validators/addressable_url_validator.rb:83:in `validate_each'","app/models/badge.rb:43:in `build_rendered_url'","app/models/badge.rb:36:in `rendered_image_url'","app/models/badges/project_badge.rb:15:in `rendered_image_url'","app/views/projects/_home_panel.html.haml:93","app/views/projects/_home_panel.html.haml:89","app/views/projects/_home_panel.html.haml:87","app/views/projects/show.html.haml:14","app/controllers/application_controller.rb:128:in `render'","app/controllers/application_controller.rb:538:in `block in allow_gitaly_ref_name_caching'","lib/gitlab/gitaly_client.rb:341:in `allow_ref_name_caching'","app/controllers/application_controller.rb:537:in `allow_gitaly_ref_name_caching'","app/controllers/application_controller.rb:487:in `set_current_admin'","lib/gitlab/session.rb:11:in `with_session'","app/controllers/application_controller.rb:478:in `set_session_storage'","lib/gitlab/i18n.rb:99:in `with_locale'","lib/gitlab/i18n.rb:105:in `with_user_locale'","app/controllers/application_controller.rb:472:in `set_locale'","app/controllers/application_controller.rb:466:in `set_current_context'","lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'","lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'","lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'","lib/gitlab/metrics/web_transaction.rb:21:in `run'","lib/gitlab/metrics/rack_middleware.rb:16:in `call'","lib/gitlab/middleware/speedscope.rb:13:in `call'","lib/gitlab/request_profiler/middleware.rb:17:in `call'","lib/gitlab/jira/middleware.rb:19:in `call'","lib/gitlab/middleware/go.rb:20:in `call'","lib/gitlab/etag_caching/middleware.rb:21:in `call'","lib/gitlab/middleware/multipart.rb:172:in `call'","lib/gitlab/middleware/read_only/controller.rb:50:in `call'","lib/gitlab/middleware/read_only.rb:18:in `call'","lib/gitlab/middleware/same_site_cookies.rb:27:in `call'","lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'","lib/gitlab/middleware/basic_health_check.rb:25:in `call'","lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'","lib/gitlab/middleware/request_context.rb:21:in `call'","config/initializers/fix_local_cache_middleware.rb:11:in `call'","lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'","lib/gitlab/metrics/requests_rack_middleware.rb:74:in `call'","lib/gitlab/middleware/release_env.rb:12:in `call'"],"db_duration_s":0.23847,"view_duration_s":0.0,"duration_s":73.05203}","ua":"Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0","correlation_id":"01K3Q2F5DXP8Y33B25TW9SSMYM","meta.user":"xxx","meta.project":"xxx/xxx","meta.root_namespace":"storage","meta.caller_id":"ProjectsController#show","meta.remote_ip":"10.17.7.63","meta.feature_category":"projects","meta.client_id":"user/74","redis_calls":21,"redis_duration_s":0.007123,"redis_read_bytes":2997,"redis_write_bytes":2370,"redis_cache_calls":20,"redis_cache_duration_s":0.006591,"redis_cache_read_bytes":2816,"redis_cache_write_bytes":1035,"redis_shared_state_calls":1,"redis_shared_state_duration_s":0.000532,"redis_shared_state_read_bytes":181,"redis_shared_state_write_bytes":1335,"db_count":41,"db_write_count":0,"db_cached_count":10,"cpu_s":2.291446,"mem_objects":394125,"mem_bytes":52397272,"mem_mallocs":198648,"mem_total_bytes":68162272,"queue_duration_s":0.009214,"exception.class":"Rack::Timeout::RequestTimeoutException","exception.message":"Request ran for longer than 60000ms","exception.backtrace":["lib/gitlab/url_blocker.rb:113:in `getaddrinfo'","lib/gitlab/url_blocker.rb:113:in `get_address_info'","lib/gitlab/url_blocker.rb:48:in `validate!'","app/validators/addressable_url_validator.rb:83:in `validate_each'","app/models/badge.rb:43:in `build_rendered_url'","app/models/badge.rb:36:in `rendered_image_url'","app/models/badges/project_badge.rb:15:in `rendered_image_url'","app/views/projects/_home_panel.html.haml:93","app/views/projects/_home_panel.html.haml:89","app/views/projects/_home_panel.html.haml:87","app/views/projects/show.html.haml:14","app/controllers/application_controller.rb:128:in `render'","app/controllers/application_controller.rb:538:in `block in allow_gitaly_ref_name_caching'","lib/gitlab/gitaly_client.rb:341:in `allow_ref_name_caching'","app/controllers/application_controller.rb:537:in `allow_gitaly_ref_name_caching'","app/controllers/application_controller.rb:487:in `set_current_admin'","lib/gitlab/session.rb:11:in `with_session'","app/controllers/application_controller.rb:478:in `set_session_storage'","lib/gitlab/i18n.rb:99:in `with_locale'","lib/gitlab/i18n.rb:105:in `with_user_locale'","app/controllers/application_controller.rb:472:in `set_locale'","app/controllers/application_controller.rb:466:in `set_current_context'","lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'","lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'","lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'","lib/gitlab/metrics/web_transaction.rb:21:in `run'","lib/gitlab/metrics/rack_middleware.rb:16:in `call'","lib/gitlab/middleware/speedscope.rb:13:in `call'","lib/gitlab/request_profiler/middleware.rb:17:in `call'","lib/gitlab/jira/middleware.rb:19:in `call'","lib/gitlab/middleware/go.rb:20:in `call'","lib/gitlab/etag_caching/middleware.rb:21:in `call'","lib/gitlab/middleware/multipart.rb:172:in `call'","lib/gitlab/middleware/read_only/controller.rb:50:in `call'","lib/gitlab/middleware/read_only.rb:18:in `call'","lib/gitlab/middleware/same_site_cookies.rb:27:in `call'","lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'","lib/gitlab/middleware/basic_health_check.rb:25:in `call'","lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'","lib/gitlab/middleware/request_context.rb:21:in `call'","config/initializers/fix_local_cache_middleware.rb:11:in `call'","lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'","lib/gitlab/metrics/requests_rack_middleware.rb:74:in `call'","lib/gitlab/middleware/release_env.rb:12:in `call'"],"db_duration_s":0.23847,"view_duration_s":0.0,"duration_s":73.05203}
经过 claude 的分析,发现是 badge 加载失败导致的
以下是完整回答:
根据这个 GitLab 日志,我可以看到问题的核心原因和解决方案:
从日志中可以看到关键错误信息:
Rack::Timeout::RequestTimeoutException (Request ran for longer than 60000ms) – 请求超过了60秒限制lib/gitlab/url_blocker.rb:113:in 'getaddrinfo'方案无效。
按照这个步骤成功解决。
# 进入GitLab控制台 gitlab-rails console
project = Project.find_by_full_path(‘xxx/xxx’) project.badges.each { |badge| puts “#{badge.id}: #{badge.link_url} | #{badge.image_url}” }
Badge.where(id: [有问题的徽章ID]).delete_all
### 3. 网络诊断
检查 GitLab 服务器的网络连通性:
```bash
# 测试DNS解析
nslookup [徽章URL的域名]
# 测试网络连通性
curl -I [完整的徽章URL]
临时启用详细日志来定位具体的URL:
# 在 /etc/gitlab/gitlab.rb 中
gitlab_rails['log_level'] = 'debug'
建议先尝试解决方案1作为紧急修复,然后通过解决方案2找到并修复具体的徽章配置问题。这样既能快速恢复服务,又能从根本上解决问题。
没想到一个 badge 会导致这么大问题,可能因为版本比较低,不知道新版本有没有解决这个问题。
harbor 集成 Chartmuseum 实现 helm 图表的存储。
Chartmuseum 对于图表索引缓存的处理有问题,删除、重传 chart 不会刷新索引,需要手动刷新。
操作步骤如下:
docker compose stop/data/chart_storage/{project}/index-cache.yaml/data/redis/*docker compose up -d记得备份。