- 更改服务器主机地址和端口号 - 注释掉 main、master、develop、production 分支的触发器配置 - 取消自动触发事件的推送限制 - 保持 pipeline 配置完整性但禁用触发条件 - 方便后续手动触发或调整 CI 流程设置 chore(ci): 更新服务器地址和pipeline触发器配置,调整基础镜像代理设置 - 更新spider-base-image和alpine-base-image的服务器地址为38.55.194.49:3422 - 为main、master、develop和production分支的pipeline添加触发器注释,禁用自动执行 - 修改.dron.yml文件,恢复pipeline触发器的配置启用推送事件触发 - 更新kami-gateway和相关模块构建文档,反映最新的服务器地址和CI/CD配置变更 - 注释Dockerfile.base中的GOPROXY环境变量,将中国代理从goproxy.cn替换为goproxy.io - 移除Alpine Linux阿里云镜像源配置,更新文档中相关代理和构建指引说明 - 增加依赖版本说明,包括新增goquery、stomp、zap等依赖版本精确声明 - 优化故障排查指南,提醒检查新的服务器地址和代理配置影响 chore(ci): 更新Docker注册表地址为新的域名 - 将Spider镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top - 将Gateway镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top - 将Alpine基础镜像构建中Docker注册表地址由git.oceanpay.cc改为git.domainpay.top - 修改对应的docker login与logout命令以匹配新注册表地址
1 line
158 KiB
JSON
1 line
158 KiB
JSON
{"code_snippets":[{"id":"0797e196981cc12dba07fc08911be5e5","path":"kami-gateway/build-base-image.sh","line_range":"1-51","gmt_create":"2025-12-17T15:28:43.906406+08:00","gmt_modified":"2025-12-17T15:28:43.906406+08:00"},{"id":"92795f0f1f4721e435145e596a08e2a1","path":"kami-gateway/README.md","line_range":"1-60","gmt_create":"2025-12-17T15:28:43.90692+08:00","gmt_modified":"2025-12-17T15:28:43.90692+08:00"},{"id":"306f606254de6fd44f875beecae8e0ce","path":"kami-gateway/README.md","line_range":"53-60","gmt_create":"2025-12-17T15:28:43.907073+08:00","gmt_modified":"2025-12-17T15:28:43.907073+08:00"},{"id":"34064b82b71268a2215f2fffbb3d89ec","path":".drone.yml","line_range":"1-190","gmt_create":"2025-12-17T15:28:43.907122+08:00","gmt_modified":"2025-12-17T15:28:43.907122+08:00"},{"id":"0f782e6bae37a40c4550705144a7ff1d","path":"kami-gateway/build-base-image.sh","line_range":"9-11","gmt_create":"2025-12-17T15:28:43.907174+08:00","gmt_modified":"2025-12-17T15:28:43.907174+08:00"},{"id":"bf5bb1bcec2bda0bb1812d2846175198","path":"kami-spider-monorepo/build-base-image.sh","line_range":"9-12","gmt_create":"2025-12-17T15:28:43.907248+08:00","gmt_modified":"2025-12-17T15:28:43.907248+08:00"},{"id":"ac97b12dee3b6b89dd74c47650a493d0","path":"kami-gateway/build-base-image.sh","line_range":"27-39","gmt_create":"2025-12-17T15:28:43.907376+08:00","gmt_modified":"2025-12-17T15:28:43.907376+08:00"},{"id":"9355d546d34f591d946d5b1dcc0dcdcd","path":"kami-gateway/build-base-image.sh","line_range":"21-23","gmt_create":"2025-12-17T15:28:43.907421+08:00","gmt_modified":"2025-12-17T15:28:43.907421+08:00"},{"id":"a7468def68e0efd512a045bba4d09949","path":"alpine-base/build-base-image.sh","line_range":"1-51","gmt_create":"2025-12-17T15:28:43.907468+08:00","gmt_modified":"2025-12-17T15:28:43.907468+08:00"},{"id":"18ff455ec8c7f13e895f36042e483426","path":"kami-spider-monorepo/build-base-image.sh","line_range":"1-54","gmt_create":"2025-12-17T15:28:43.907555+08:00","gmt_modified":"2025-12-17T15:28:43.907555+08:00"},{"id":"9fb5349fe112993c1c6b44dbce02af49","path":"kami-gateway/README.md","line_range":"47-52","gmt_create":"2025-12-17T15:28:43.907756+08:00","gmt_modified":"2025-12-17T15:28:43.907756+08:00"},{"id":"8c4b824492d914efbb8d47080dc95376","path":"alpine-base/README.md","line_range":"1-70","gmt_create":"2025-12-17T15:28:50.332217+08:00","gmt_modified":"2025-12-17T15:28:50.332218+08:00"},{"id":"b2e21efc7cc678b46dae34889a09e04b","path":"kami-gateway/Dockerfile.base","line_range":"1-59","gmt_create":"2025-12-17T15:28:50.332345+08:00","gmt_modified":"2025-12-17T15:28:50.332345+08:00"},{"id":"cc66295d8b60c9a46db804287fa67447","path":"kami-gateway/Dockerfile.base","line_range":"4-59","gmt_create":"2025-12-17T15:28:50.332467+08:00","gmt_modified":"2025-12-17T15:28:50.332467+08:00"},{"id":"3c9f945a45e30dee791cb3e663db6364","path":"kami-gateway/Dockerfile.base","line_range":"7-12","gmt_create":"2025-12-17T15:28:50.332709+08:00","gmt_modified":"2025-12-17T15:28:50.332709+08:00"},{"id":"bf4e5dc965608481618191b270954a62","path":"kami-gateway/go.mod","line_range":"1-82","gmt_create":"2025-12-17T15:28:50.332986+08:00","gmt_modified":"2025-12-17T15:28:50.332986+08:00"},{"id":"775adf479f96a0196f9abd6b780f3d23","path":"kami-gateway/Dockerfile.base","line_range":"33-34","gmt_create":"2025-12-17T15:28:50.333216+08:00","gmt_modified":"2025-12-17T15:28:50.333216+08:00"},{"id":"bbea9e751d16a82c24ca860f5f3c5401","path":"kami-gateway/build-base-image.sh","line_range":"35-39","gmt_create":"2025-12-17T15:28:50.333286+08:00","gmt_modified":"2025-12-17T15:28:50.333286+08:00"},{"id":"67f0682e657dc0281851dd96d3b33f69","path":"kami-gateway/go.mod","line_range":"7-39","gmt_create":"2025-12-17T15:30:20.240271+08:00","gmt_modified":"2025-12-17T15:30:20.240271+08:00"},{"id":"ac8a0c7ac861dabdbbb918f9ff4efc9a","path":"kami-gateway/go.sum","line_range":"1-165","gmt_create":"2025-12-17T15:30:20.240377+08:00","gmt_modified":"2025-12-17T15:30:20.240377+08:00"},{"id":"a9b0feaa3bed058679f463e82c3e01a9","path":"kami-gateway/Dockerfile.base","line_range":"50-54","gmt_create":"2025-12-17T15:30:20.240498+08:00","gmt_modified":"2025-12-17T15:30:20.240498+08:00"},{"id":"a76a79426146d00706a98073c821eec5","path":"kami-gateway/go.mod","line_range":"5","gmt_create":"2025-12-17T15:30:20.240573+08:00","gmt_modified":"2025-12-17T15:30:20.240573+08:00"}],"knowledge_relations":[{"id":225,"source_id":"2ecaaf95-655f-4d6d-bb65-5b3a221d0e19","target_id":"adc2875e-7302-4520-9bbd-8a5f67213877","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2ecaaf95-655f-4d6d-bb65-5b3a221d0e19 -\u003e adc2875e-7302-4520-9bbd-8a5f67213877","gmt_create":"2025-11-09T23:18:39.259063+08:00","gmt_modified":"2025-11-09T23:18:39.259063+08:00"},{"id":226,"source_id":"2ecaaf95-655f-4d6d-bb65-5b3a221d0e19","target_id":"603cb3a2-940c-4fb4-af92-1455c2e842f3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2ecaaf95-655f-4d6d-bb65-5b3a221d0e19 -\u003e 603cb3a2-940c-4fb4-af92-1455c2e842f3","gmt_create":"2025-11-09T23:18:39.265039+08:00","gmt_modified":"2025-11-09T23:18:39.265039+08:00"},{"id":227,"source_id":"2ecaaf95-655f-4d6d-bb65-5b3a221d0e19","target_id":"3883b336-0b91-405e-8c5d-fe6b5f98462e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2ecaaf95-655f-4d6d-bb65-5b3a221d0e19 -\u003e 3883b336-0b91-405e-8c5d-fe6b5f98462e","gmt_create":"2025-11-09T23:18:39.27175+08:00","gmt_modified":"2025-11-09T23:18:39.27175+08:00"},{"id":228,"source_id":"12203115-71b4-4691-88bf-ab11564b9fe8","target_id":"295c1192-6d0a-4dd0-9d9d-382ac911c205","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 12203115-71b4-4691-88bf-ab11564b9fe8 -\u003e 295c1192-6d0a-4dd0-9d9d-382ac911c205","gmt_create":"2025-11-09T23:18:39.2856+08:00","gmt_modified":"2025-11-09T23:18:39.2856+08:00"},{"id":230,"source_id":"12203115-71b4-4691-88bf-ab11564b9fe8","target_id":"958d01c4-a4ce-441a-b1e6-464718390859","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 12203115-71b4-4691-88bf-ab11564b9fe8 -\u003e 958d01c4-a4ce-441a-b1e6-464718390859","gmt_create":"2025-11-09T23:18:39.298686+08:00","gmt_modified":"2025-11-09T23:18:39.298686+08:00"},{"id":231,"source_id":"12203115-71b4-4691-88bf-ab11564b9fe8","target_id":"b75ef0b1-14eb-4602-a372-8bc28c154516","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 12203115-71b4-4691-88bf-ab11564b9fe8 -\u003e b75ef0b1-14eb-4602-a372-8bc28c154516","gmt_create":"2025-11-09T23:18:39.303105+08:00","gmt_modified":"2025-11-09T23:18:39.303105+08:00"},{"id":232,"source_id":"0b98aaa0-f8b6-4519-9e33-da448e5d46bc","target_id":"2a4ff51e-641d-4f66-99fd-c5cf3faf8d68","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0b98aaa0-f8b6-4519-9e33-da448e5d46bc -\u003e 2a4ff51e-641d-4f66-99fd-c5cf3faf8d68","gmt_create":"2025-11-09T23:18:39.306924+08:00","gmt_modified":"2025-11-09T23:18:39.306924+08:00"},{"id":233,"source_id":"0b98aaa0-f8b6-4519-9e33-da448e5d46bc","target_id":"192594ea-bb47-4a29-b16c-b6782eafb53e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0b98aaa0-f8b6-4519-9e33-da448e5d46bc -\u003e 192594ea-bb47-4a29-b16c-b6782eafb53e","gmt_create":"2025-11-09T23:18:39.316533+08:00","gmt_modified":"2025-11-09T23:18:39.316533+08:00"},{"id":234,"source_id":"0b98aaa0-f8b6-4519-9e33-da448e5d46bc","target_id":"8525a571-0ae0-4153-9ba5-23d2de726ef4","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0b98aaa0-f8b6-4519-9e33-da448e5d46bc -\u003e 8525a571-0ae0-4153-9ba5-23d2de726ef4","gmt_create":"2025-11-09T23:18:39.323598+08:00","gmt_modified":"2025-11-09T23:18:39.323598+08:00"},{"id":235,"source_id":"0b98aaa0-f8b6-4519-9e33-da448e5d46bc","target_id":"b5946ba4-2b1f-431a-b8ea-87a1a62a6dff","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0b98aaa0-f8b6-4519-9e33-da448e5d46bc -\u003e b5946ba4-2b1f-431a-b8ea-87a1a62a6dff","gmt_create":"2025-11-09T23:18:39.326634+08:00","gmt_modified":"2025-11-09T23:18:39.326634+08:00"},{"id":236,"source_id":"0b98aaa0-f8b6-4519-9e33-da448e5d46bc","target_id":"4044ee70-4d92-48cd-9ea5-f437be453797","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0b98aaa0-f8b6-4519-9e33-da448e5d46bc -\u003e 4044ee70-4d92-48cd-9ea5-f437be453797","gmt_create":"2025-11-09T23:18:39.32704+08:00","gmt_modified":"2025-11-09T23:18:39.32704+08:00"},{"id":238,"source_id":"603cb3a2-940c-4fb4-af92-1455c2e842f3","target_id":"844ce3c6-c207-4f0f-9749-4a97ffb47912","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 603cb3a2-940c-4fb4-af92-1455c2e842f3 -\u003e 844ce3c6-c207-4f0f-9749-4a97ffb47912","gmt_create":"2025-11-09T23:18:39.329358+08:00","gmt_modified":"2025-11-09T23:18:39.329358+08:00"},{"id":240,"source_id":"603cb3a2-940c-4fb4-af92-1455c2e842f3","target_id":"e3d57446-2281-49ee-84bf-50106e329c6e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 603cb3a2-940c-4fb4-af92-1455c2e842f3 -\u003e e3d57446-2281-49ee-84bf-50106e329c6e","gmt_create":"2025-11-09T23:18:39.330074+08:00","gmt_modified":"2025-11-09T23:18:39.330074+08:00"},{"id":1140,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"d51bd22d33520907ad11b950d91b15c1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/build-base-image.sh","gmt_create":"2025-12-17T15:28:43.907821+08:00","gmt_modified":"2025-12-17T15:28:43.907821+08:00"},{"id":1141,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"5b9b2fee5ba094a586ece5fcaac132db","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/README.md","gmt_create":"2025-12-17T15:28:43.909124+08:00","gmt_modified":"2025-12-17T15:28:43.909124+08:00"},{"id":1142,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"dcd9d9080b7a5d345584f43eec15317c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-spider-monorepo/build-base-image.sh","gmt_create":"2025-12-17T15:28:43.909326+08:00","gmt_modified":"2025-12-17T15:28:43.909326+08:00"},{"id":1143,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"239ca13f704f503f5ab749860a3a91e8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: alpine-base/build-base-image.sh","gmt_create":"2025-12-17T15:28:43.909489+08:00","gmt_modified":"2025-12-17T15:28:43.909489+08:00"},{"id":1144,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"d9cf57a313c930cb9db01f8cfca4a192","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: .drone.yml","gmt_create":"2025-12-17T15:28:43.909608+08:00","gmt_modified":"2025-12-17T15:28:43.909608+08:00"},{"id":1145,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"0797e196981cc12dba07fc08911be5e5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/build-base-image.sh#1-51","gmt_create":"2025-12-17T15:28:43.909739+08:00","gmt_modified":"2025-12-17T15:28:43.909739+08:00"},{"id":1146,"source_id":"d51bd22d33520907ad11b950d91b15c1","target_id":"0797e196981cc12dba07fc08911be5e5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-51","gmt_create":"2025-12-17T15:28:43.909856+08:00","gmt_modified":"2025-12-17T15:28:43.909856+08:00"},{"id":1147,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"92795f0f1f4721e435145e596a08e2a1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/README.md#1-60","gmt_create":"2025-12-17T15:28:43.910504+08:00","gmt_modified":"2025-12-17T15:28:43.910504+08:00"},{"id":1148,"source_id":"5b9b2fee5ba094a586ece5fcaac132db","target_id":"92795f0f1f4721e435145e596a08e2a1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-60","gmt_create":"2025-12-17T15:28:43.910593+08:00","gmt_modified":"2025-12-17T15:28:43.910593+08:00"},{"id":1149,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"306f606254de6fd44f875beecae8e0ce","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/README.md#53-60","gmt_create":"2025-12-17T15:28:43.910889+08:00","gmt_modified":"2025-12-17T15:28:43.910889+08:00"},{"id":1150,"source_id":"5b9b2fee5ba094a586ece5fcaac132db","target_id":"306f606254de6fd44f875beecae8e0ce","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 53-60","gmt_create":"2025-12-17T15:28:43.910974+08:00","gmt_modified":"2025-12-17T15:28:43.910974+08:00"},{"id":1151,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"34064b82b71268a2215f2fffbb3d89ec","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: .drone.yml#1-190","gmt_create":"2025-12-17T15:28:43.911085+08:00","gmt_modified":"2025-12-17T15:28:43.911085+08:00"},{"id":1152,"source_id":"d9cf57a313c930cb9db01f8cfca4a192","target_id":"34064b82b71268a2215f2fffbb3d89ec","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-190","gmt_create":"2025-12-17T15:28:43.911158+08:00","gmt_modified":"2025-12-17T15:28:43.911158+08:00"},{"id":1153,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"0f782e6bae37a40c4550705144a7ff1d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/build-base-image.sh#9-11","gmt_create":"2025-12-17T15:28:43.911309+08:00","gmt_modified":"2025-12-17T15:28:43.911309+08:00"},{"id":1154,"source_id":"d51bd22d33520907ad11b950d91b15c1","target_id":"0f782e6bae37a40c4550705144a7ff1d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 9-11","gmt_create":"2025-12-17T15:28:43.91139+08:00","gmt_modified":"2025-12-17T15:28:43.91139+08:00"},{"id":1155,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"bf5bb1bcec2bda0bb1812d2846175198","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-spider-monorepo/build-base-image.sh#9-12","gmt_create":"2025-12-17T15:28:43.911503+08:00","gmt_modified":"2025-12-17T15:28:43.911503+08:00"},{"id":1156,"source_id":"dcd9d9080b7a5d345584f43eec15317c","target_id":"bf5bb1bcec2bda0bb1812d2846175198","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 9-12","gmt_create":"2025-12-17T15:28:43.911588+08:00","gmt_modified":"2025-12-17T15:28:43.911588+08:00"},{"id":1157,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"ac97b12dee3b6b89dd74c47650a493d0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/build-base-image.sh#27-39","gmt_create":"2025-12-17T15:28:43.911807+08:00","gmt_modified":"2025-12-17T15:28:43.911807+08:00"},{"id":1158,"source_id":"d51bd22d33520907ad11b950d91b15c1","target_id":"ac97b12dee3b6b89dd74c47650a493d0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 27-39","gmt_create":"2025-12-17T15:28:43.911877+08:00","gmt_modified":"2025-12-17T15:28:43.911877+08:00"},{"id":1159,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"9355d546d34f591d946d5b1dcc0dcdcd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/build-base-image.sh#21-23","gmt_create":"2025-12-17T15:28:43.911967+08:00","gmt_modified":"2025-12-17T15:28:43.911968+08:00"},{"id":1160,"source_id":"d51bd22d33520907ad11b950d91b15c1","target_id":"9355d546d34f591d946d5b1dcc0dcdcd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 21-23","gmt_create":"2025-12-17T15:28:43.912046+08:00","gmt_modified":"2025-12-17T15:28:43.912046+08:00"},{"id":1161,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"a7468def68e0efd512a045bba4d09949","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: alpine-base/build-base-image.sh#1-51","gmt_create":"2025-12-17T15:28:43.912136+08:00","gmt_modified":"2025-12-17T15:28:43.912136+08:00"},{"id":1162,"source_id":"239ca13f704f503f5ab749860a3a91e8","target_id":"a7468def68e0efd512a045bba4d09949","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-51","gmt_create":"2025-12-17T15:28:43.912225+08:00","gmt_modified":"2025-12-17T15:28:43.912225+08:00"},{"id":1163,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"18ff455ec8c7f13e895f36042e483426","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-spider-monorepo/build-base-image.sh#1-54","gmt_create":"2025-12-17T15:28:43.912393+08:00","gmt_modified":"2025-12-17T15:28:43.912393+08:00"},{"id":1164,"source_id":"dcd9d9080b7a5d345584f43eec15317c","target_id":"18ff455ec8c7f13e895f36042e483426","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-54","gmt_create":"2025-12-17T15:28:43.912479+08:00","gmt_modified":"2025-12-17T15:28:43.912479+08:00"},{"id":1165,"source_id":"407e4974-151b-443a-958e-bb4048b3a58b","target_id":"9fb5349fe112993c1c6b44dbce02af49","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/README.md#47-52","gmt_create":"2025-12-17T15:28:43.912799+08:00","gmt_modified":"2025-12-17T15:28:43.912799+08:00"},{"id":1166,"source_id":"5b9b2fee5ba094a586ece5fcaac132db","target_id":"9fb5349fe112993c1c6b44dbce02af49","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 47-52","gmt_create":"2025-12-17T15:28:43.912872+08:00","gmt_modified":"2025-12-17T15:28:43.912872+08:00"},{"id":1167,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"0fc6987c237309da6447162b0b27acf9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/Dockerfile.base","gmt_create":"2025-12-17T15:28:50.333384+08:00","gmt_modified":"2025-12-17T15:28:50.333384+08:00"},{"id":1168,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"d51bd22d33520907ad11b950d91b15c1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/build-base-image.sh","gmt_create":"2025-12-17T15:28:50.334097+08:00","gmt_modified":"2025-12-17T15:28:50.334097+08:00"},{"id":1169,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"dd3c5ce717dd8499604dfb3453a6bddc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/go.mod","gmt_create":"2025-12-17T15:28:50.33424+08:00","gmt_modified":"2025-12-17T15:28:50.33424+08:00"},{"id":1170,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"239ca13f704f503f5ab749860a3a91e8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: alpine-base/build-base-image.sh","gmt_create":"2025-12-17T15:28:50.334362+08:00","gmt_modified":"2025-12-17T15:28:50.334362+08:00"},{"id":1171,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"fa782199706d6850374616ff3d8248a3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: alpine-base/README.md","gmt_create":"2025-12-17T15:28:50.334472+08:00","gmt_modified":"2025-12-17T15:28:50.334472+08:00"},{"id":1172,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"5b9b2fee5ba094a586ece5fcaac132db","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/README.md","gmt_create":"2025-12-17T15:28:50.334589+08:00","gmt_modified":"2025-12-17T15:28:50.334589+08:00"},{"id":1173,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"8c4b824492d914efbb8d47080dc95376","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: alpine-base/README.md#1-70","gmt_create":"2025-12-17T15:28:50.334734+08:00","gmt_modified":"2025-12-17T15:28:50.334734+08:00"},{"id":1174,"source_id":"fa782199706d6850374616ff3d8248a3","target_id":"8c4b824492d914efbb8d47080dc95376","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-70","gmt_create":"2025-12-17T15:28:50.334884+08:00","gmt_modified":"2025-12-17T15:28:50.334884+08:00"},{"id":1175,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"92795f0f1f4721e435145e596a08e2a1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/README.md#1-60","gmt_create":"2025-12-17T15:28:50.335058+08:00","gmt_modified":"2025-12-17T15:28:50.335058+08:00"},{"id":1176,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"b2e21efc7cc678b46dae34889a09e04b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/Dockerfile.base#1-59","gmt_create":"2025-12-17T15:28:50.335231+08:00","gmt_modified":"2025-12-17T15:28:50.335231+08:00"},{"id":1177,"source_id":"0fc6987c237309da6447162b0b27acf9","target_id":"b2e21efc7cc678b46dae34889a09e04b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-59","gmt_create":"2025-12-17T15:28:50.335333+08:00","gmt_modified":"2025-12-17T15:28:50.335333+08:00"},{"id":1178,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"0797e196981cc12dba07fc08911be5e5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/build-base-image.sh#1-51","gmt_create":"2025-12-17T15:28:50.335564+08:00","gmt_modified":"2025-12-17T15:28:50.335565+08:00"},{"id":1179,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"cc66295d8b60c9a46db804287fa67447","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/Dockerfile.base#4-59","gmt_create":"2025-12-17T15:28:50.335727+08:00","gmt_modified":"2025-12-17T15:28:50.335728+08:00"},{"id":1180,"source_id":"0fc6987c237309da6447162b0b27acf9","target_id":"cc66295d8b60c9a46db804287fa67447","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 4-59","gmt_create":"2025-12-17T15:28:50.335882+08:00","gmt_modified":"2025-12-17T15:28:50.335882+08:00"},{"id":1181,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"3c9f945a45e30dee791cb3e663db6364","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/Dockerfile.base#7-12","gmt_create":"2025-12-17T15:28:50.336296+08:00","gmt_modified":"2025-12-17T15:28:50.336296+08:00"},{"id":1182,"source_id":"0fc6987c237309da6447162b0b27acf9","target_id":"3c9f945a45e30dee791cb3e663db6364","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 7-12","gmt_create":"2025-12-17T15:28:50.336398+08:00","gmt_modified":"2025-12-17T15:28:50.336398+08:00"},{"id":1183,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"bf4e5dc965608481618191b270954a62","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/go.mod#1-82","gmt_create":"2025-12-17T15:28:50.336879+08:00","gmt_modified":"2025-12-17T15:28:50.336879+08:00"},{"id":1184,"source_id":"dd3c5ce717dd8499604dfb3453a6bddc","target_id":"bf4e5dc965608481618191b270954a62","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-82","gmt_create":"2025-12-17T15:28:50.336988+08:00","gmt_modified":"2025-12-17T15:28:50.336988+08:00"},{"id":1185,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"9fb5349fe112993c1c6b44dbce02af49","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/README.md#47-52","gmt_create":"2025-12-17T15:28:50.337314+08:00","gmt_modified":"2025-12-17T15:28:50.337314+08:00"},{"id":1186,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"775adf479f96a0196f9abd6b780f3d23","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/Dockerfile.base#33-34","gmt_create":"2025-12-17T15:28:50.337504+08:00","gmt_modified":"2025-12-17T15:28:50.337504+08:00"},{"id":1187,"source_id":"0fc6987c237309da6447162b0b27acf9","target_id":"775adf479f96a0196f9abd6b780f3d23","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 33-34","gmt_create":"2025-12-17T15:28:50.33761+08:00","gmt_modified":"2025-12-17T15:28:50.33761+08:00"},{"id":1188,"source_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","target_id":"bbea9e751d16a82c24ca860f5f3c5401","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/build-base-image.sh#35-39","gmt_create":"2025-12-17T15:28:50.337774+08:00","gmt_modified":"2025-12-17T15:28:50.337774+08:00"},{"id":1189,"source_id":"d51bd22d33520907ad11b950d91b15c1","target_id":"bbea9e751d16a82c24ca860f5f3c5401","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-39","gmt_create":"2025-12-17T15:28:50.337906+08:00","gmt_modified":"2025-12-17T15:28:50.337906+08:00"},{"id":1190,"source_id":"30884903-1b75-4192-845c-61a90fc80d8b","target_id":"dd3c5ce717dd8499604dfb3453a6bddc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/go.mod","gmt_create":"2025-12-17T15:30:20.240618+08:00","gmt_modified":"2025-12-17T15:30:20.240618+08:00"},{"id":1191,"source_id":"30884903-1b75-4192-845c-61a90fc80d8b","target_id":"27c71701cf856640814fdbac2776b8ae","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/go.sum","gmt_create":"2025-12-17T15:30:20.240959+08:00","gmt_modified":"2025-12-17T15:30:20.240959+08:00"},{"id":1192,"source_id":"30884903-1b75-4192-845c-61a90fc80d8b","target_id":"0fc6987c237309da6447162b0b27acf9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: kami-gateway/Dockerfile.base","gmt_create":"2025-12-17T15:30:20.241114+08:00","gmt_modified":"2025-12-17T15:30:20.241114+08:00"},{"id":1193,"source_id":"30884903-1b75-4192-845c-61a90fc80d8b","target_id":"67f0682e657dc0281851dd96d3b33f69","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/go.mod#7-39","gmt_create":"2025-12-17T15:30:20.241313+08:00","gmt_modified":"2025-12-17T15:30:20.241313+08:00"},{"id":1194,"source_id":"dd3c5ce717dd8499604dfb3453a6bddc","target_id":"67f0682e657dc0281851dd96d3b33f69","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 7-39","gmt_create":"2025-12-17T15:30:20.241452+08:00","gmt_modified":"2025-12-17T15:30:20.241452+08:00"},{"id":1195,"source_id":"30884903-1b75-4192-845c-61a90fc80d8b","target_id":"ac8a0c7ac861dabdbbb918f9ff4efc9a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/go.sum#1-165","gmt_create":"2025-12-17T15:30:20.241618+08:00","gmt_modified":"2025-12-17T15:30:20.241618+08:00"},{"id":1196,"source_id":"27c71701cf856640814fdbac2776b8ae","target_id":"ac8a0c7ac861dabdbbb918f9ff4efc9a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-165","gmt_create":"2025-12-17T15:30:20.241738+08:00","gmt_modified":"2025-12-17T15:30:20.241738+08:00"},{"id":1197,"source_id":"30884903-1b75-4192-845c-61a90fc80d8b","target_id":"a9b0feaa3bed058679f463e82c3e01a9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/Dockerfile.base#50-54","gmt_create":"2025-12-17T15:30:20.241962+08:00","gmt_modified":"2025-12-17T15:30:20.241962+08:00"},{"id":1198,"source_id":"0fc6987c237309da6447162b0b27acf9","target_id":"a9b0feaa3bed058679f463e82c3e01a9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 50-54","gmt_create":"2025-12-17T15:30:20.24207+08:00","gmt_modified":"2025-12-17T15:30:20.24207+08:00"},{"id":1199,"source_id":"30884903-1b75-4192-845c-61a90fc80d8b","target_id":"a76a79426146d00706a98073c821eec5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: kami-gateway/go.mod#5","gmt_create":"2025-12-17T15:30:20.24223+08:00","gmt_modified":"2025-12-17T15:30:20.24223+08:00"},{"id":1200,"source_id":"dd3c5ce717dd8499604dfb3453a6bddc","target_id":"a76a79426146d00706a98073c821eec5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5","gmt_create":"2025-12-17T15:30:20.242432+08:00","gmt_modified":"2025-12-17T15:30:20.242432+08:00"},{"id":1201,"source_id":"12203115-71b4-4691-88bf-ab11564b9fe8","target_id":"30884903-1b75-4192-845c-61a90fc80d8b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 12203115-71b4-4691-88bf-ab11564b9fe8 -\u003e 30884903-1b75-4192-845c-61a90fc80d8b","gmt_create":"2025-12-17T15:30:20.313164+08:00","gmt_modified":"2025-12-17T15:30:20.313164+08:00"},{"id":1202,"source_id":"603cb3a2-940c-4fb4-af92-1455c2e842f3","target_id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 603cb3a2-940c-4fb4-af92-1455c2e842f3 -\u003e 8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","gmt_create":"2025-12-17T15:30:20.313567+08:00","gmt_modified":"2025-12-17T15:30:20.313567+08:00"},{"id":1203,"source_id":"603cb3a2-940c-4fb4-af92-1455c2e842f3","target_id":"407e4974-151b-443a-958e-bb4048b3a58b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 603cb3a2-940c-4fb4-af92-1455c2e842f3 -\u003e 407e4974-151b-443a-958e-bb4048b3a58b","gmt_create":"2025-12-17T15:30:20.313696+08:00","gmt_modified":"2025-12-17T15:30:20.313696+08:00"}],"source_files":[{"id":"d51bd22d33520907ad11b950d91b15c1","path":"kami-gateway/build-base-image.sh","filename":"build-base-image.sh","gmt_create":"2025-12-17T15:28:43.905138+08:00","gmt_modified":"2025-12-17T15:28:43.905138+08:00"},{"id":"5b9b2fee5ba094a586ece5fcaac132db","path":"kami-gateway/README.md","filename":"README.md","gmt_create":"2025-12-17T15:28:43.906171+08:00","gmt_modified":"2025-12-17T15:28:43.906171+08:00"},{"id":"dcd9d9080b7a5d345584f43eec15317c","path":"kami-spider-monorepo/build-base-image.sh","filename":"build-base-image.sh","gmt_create":"2025-12-17T15:28:43.90622+08:00","gmt_modified":"2025-12-17T15:28:43.90622+08:00"},{"id":"239ca13f704f503f5ab749860a3a91e8","path":"alpine-base/build-base-image.sh","filename":"build-base-image.sh","gmt_create":"2025-12-17T15:28:43.906262+08:00","gmt_modified":"2025-12-17T15:28:43.906262+08:00"},{"id":"d9cf57a313c930cb9db01f8cfca4a192","path":".drone.yml","filename":".drone.yml","gmt_create":"2025-12-17T15:28:43.906342+08:00","gmt_modified":"2025-12-17T15:28:43.906342+08:00"},{"id":"0fc6987c237309da6447162b0b27acf9","path":"kami-gateway/Dockerfile.base","filename":"Dockerfile.base","gmt_create":"2025-12-17T15:28:50.331917+08:00","gmt_modified":"2025-12-17T15:28:50.331917+08:00"},{"id":"dd3c5ce717dd8499604dfb3453a6bddc","path":"kami-gateway/go.mod","filename":"go.mod","gmt_create":"2025-12-17T15:28:50.332046+08:00","gmt_modified":"2025-12-17T15:28:50.332046+08:00"},{"id":"fa782199706d6850374616ff3d8248a3","path":"alpine-base/README.md","filename":"README.md","gmt_create":"2025-12-17T15:28:50.332121+08:00","gmt_modified":"2025-12-17T15:28:50.332121+08:00"},{"id":"27c71701cf856640814fdbac2776b8ae","path":"kami-gateway/go.sum","filename":"go.sum","gmt_create":"2025-12-17T15:30:20.240149+08:00","gmt_modified":"2025-12-17T15:30:20.240149+08:00"}],"wiki_catalogs":[{"id":"03f420dc-94ba-4438-939d-b3cbb95856eb","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"项目概述","description":"project-overview","prompt":"创建关于docker-registry项目的综合性内容,重点介绍其作为容器化基础镜像构建系统的核心作用。解释该项目如何通过alpine-base、kami-gateway和kami-spider-monorepo三个模块为不同技术栈(Alpine、Go、Python)提供优化的Docker基础镜像。阐述其架构设计理念,包括分层继承、构建脚本复用和非root安全运行机制。详细说明项目的主要功能:加速镜像构建、统一开发环境、中国镜像源优化、自定义证书集成以及轻量化设计。结合代码库中的实际用例,展示各模块之间的关系与协同方式。为初学者提供概念性引导,包括Docker基础、构建流程和安全实践;为高级用户提供技术细节,如环境变量控制、依赖预下载和CI/CD集成。使用项目中真实的镜像名称和标签(如alpine-base:latest、kami-gateway-base:latest)提供实际使用示例,并说明其在微服务架构中的定位与价值。","progress_status":"completed","dependent_files":"alpine-base/README.md,kami-gateway/README.md,kami-spider-monorepo/README.md","gmt_create":"2025-11-09T23:07:27.825653+08:00","gmt_modified":"2025-11-09T23:09:27.674083+08:00","raw_data":"WikiEncrypted:0MI1/XkBoMl0lTbK6t0Cn/+8FdvqrJ62ianMLvZj02elJtBUgH0Ns0veIx1WPtM9wwkxI+/XAqHLxJLlHB8wV64BEQU6fsgKMDP1iJCc20Yj3vryH9o62N7mtzXqaPjik3NnLJEUI5Q1LwKQ5laz6QFH8GBY7IAzRLEZyROHy4YzTF7oiQWO/zUL4hVQW1BRJiC9EwzIzl8I4pvxp+yNbsScgzTEPkrBAvU2ktib91+GF/rAOTsViVXPDi6cR3QTzBhdTlstl80RshnqOQodnUQbF1+CVlj/51m8mKKuwq40Dg9gTyJHLrkFaUrVP2E2GNfbt3oTEXSK4G/BTDpp5a/0hDaK18vJw+tsC8WPPGSsPex9hPUt/rcVsIKt79JY+iSBMCNqy/aSfBOWJYkhxnY5XXosu5pwocOLRm6YQR7ve6MuW4dBZFb8HBolQ0bATVc6uatrdhyWBGcbJsKzMbJOOXAdbtI01S4RJng5Y/TbeJXXEym0Bz6TQ+NfEozVguaI8woKa8ierkE21pp7e6JErDqrqySftnP/5erFKX4U0oSbQumxFb+r03DrsxvGfuvHbc+QFD6RMh4Zd2cQBsmmbXPN826inB4/ipXgGCnsuL462WIPmg0ppgfK/g6+p7dIGGZWMyMeIZPduxXJUDlxD7mALrNxRlYYRgH926PrvpuPmwys6/t/W/29GjC4WEOHvlQnrhctlECi/NBtqU0YLWvcJB1mGfGU/kRy5YeHNjx27tx12YhZqefeK8lIzRz/1K+JsWcfbzhBde3gtPwBLfGHNpxX7kiTIwERk+rQ9/fbXNae7skvWhmZPhiICrqpL4WdhYducVlFjI9FY8CRRsbiv93Z7FSf5OuKomI7o5gRC8nTlnBgWMoJz8XpzkE790ZlclPslj7cjeL2FfaKEkyL47bEipqg3zY0Nb3Ly8dD0UIJVTFY/69hGYLiVAQ4gYnjFe7SgzOtmhjSsD07/yz0TRFaNrBmSKIboZ5IGGRAA3jbgkS3g7lwPyZFEXSXMcjp7C1jDTv0pBJu5NFfkREOUsuTAV4RrA3p1iSzMn0yAxmBU/sMj9ocbUfa8pZnOXi/jYXCAqJgMd3QcPzwpHw6IV3w0A93Ttut5AJuMEpfz74Ekq3oE/ZyJo7TzrcO9p0AMMGSuJqmapra93Ct51Q4XPhcazrhE9M3O2dgL+5CicvYpSXpm2/l4hSwNjH4HcJ4/opJGa97uRbL5b0bO0Pc+KtLYdeQLY9PadL/cCEIBHVUWTS6j7mHKwwh8t82PtbLurg4XLRt+7efo0KuCcT46u78oTDLHAzxGBML3R27fIE1MtPLCJ0VTVHu/ztbxiSG87S0IgpQ/WJwO7QMuIHSglGUiU8IUbreKoHfIOed2dWwEW43BtOlEU/o21VHHOGJd+PpwhLGgD9UsMoaChbEcl9kW04RzWANrRFnaItwLgfU00RUadplv+dRPEG3IrKaQwUrpYbA00X2EOzDtBLPZv7z17VuJXn15S8LdQnj+C8tB/8wHCdg2EyKTGMNh67NtXYYna/y4O9H58RpZ/n6jP1YrIvRs3TVrv6PtUI/LLqSKcsPbC5F0Vs/w/d6M4oI8UL5sOCRiAZFpLhS9EcVtWC2p2YHJaax81qgq20S2STLPRPnOsdHhTPrzZHJyzjvA1xwe/7cGI8U+luU9vfn+Fdpy08ncFzikQprlpFkJLIu2rPmkWETtfLI+4zXrr9SCDK3x5xswcfzD5+kW0064tTFqPF2emoHnXjhzIeH5YYokqZV/sOF8Su9PqecR0nL4UaVMyuQ1cMzSQDY37iuydMNMv5vfGY9CtzHeeiz+NqDtao8qYWR4Je1CCgYrTgKYQVIe0HwW/wgvK0mYK8vwmq3FidBmzklu+OXJEJNtD9Ewy0PDpPGx+l0"},{"id":"07c159d7-3fa1-4dca-a4ea-502f25f5b08c","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"基础镜像构建","description":"kami-gateway-base-image","prompt":"详细阐述kami-gateway基础镜像的构建机制,重点解析Dockerfile.base中如何从golang:1.25-alpine镜像出发,配置中国镜像源(阿里云)、设置Asia/Shanghai时区、安装tzdata等必要系统工具,并通过RUN指令创建非root用户appuser以提升安全性。说明环境变量GO111MODULE=on和GOPROXY=https://goproxy.cn,direct如何加速Go模块下载。深入分析build-base-image.sh脚本如何调用docker build命令构建镜像,并通过--tag生成本地标签kami-gateway-base:latest及版本化标签。解释脚本中如何根据DOCKER_REGISTRY环境变量决定是否推送至私有仓库git.oceanpay.cc/danial,并展示构建完成后镜像大小的输出逻辑。结合实际代码片段说明多阶段配置与安全加固的最佳实践。","parent_id":"bed2c9b4-de63-4b03-8187-d62744475754","progress_status":"completed","dependent_files":"kami-gateway/Dockerfile.base,kami-gateway/build-base-image.sh","gmt_create":"2025-11-09T23:07:52.901422+08:00","gmt_modified":"2025-11-09T23:11:27.965007+08:00","raw_data":"WikiEncrypted:rEAPRMs+W78U3NolG1cAjoraUD6awSCIzxelIgskRdc7QCSaUDDeVcymrIahhy3dCAttLX3mc433jwlyvYeX+ZkvGriiz6WsHD2sqZaAVqVXpJ9g07A0Pahb3Cbn7IJo8/BSTbArMK18RT5B9pjSo88/bd80tucTkSawTDIhMRv88Ykl+xjLFSJn+aY9Nid2hS9FiJPpK7JzSlsH9n1FHji4QA4dh5bugncK8qIj4xVhBwWdN/1+KRj/eHYdPF4puXO/nv7pkgALSH8DicuNMmr5BaHsHLUWbPhJ0qxZf4EsnyEjZXO7qNyHC2Hvpe3QWgI+cx7oblVBiT1ro7v1kI3hitQA/XdPkaN1kn3tRhwt5kBJmmHk1W9EwisvS4oo6edRk8lSTwNj/nzgLAX9sKuqsdNZrwI6ewnwnIMleFFiD5k+WCB7zAqgZko6cdo6rKZzE6EdJtf46M/1NonX2yrarl9z9bBTLgdgyW7Fd32bmU880xMwVthP8bLqvAIB57ZmwFMYflf0Jf00jUnNR3ixqoj+CHdCBeUwNgGJtb2luWuu3QaPYt8OYkc7PZnPUav65R+PmqmSf6o37xW7TeiMHJSsGoowZwVDFF4j/MZ9jDBak3tajTwlWoF4MWskOdoIusP7jpp0h6vo8/xWxp3YCmBYWtAnDT5edw4EkC0qfv6zkPn6iREKfVEsA+UojMj8RJmj/+UgdhE7FPl6Xxm+C6/jn2BIoBUJv2jeRWcapqwK375fktEQOtjccAx0MzOzN2zbxirAoqg/l2MecanPUdDP1sRgITh8TwVAsxRRCFw4CGzYeElqItr2MkeRYVcC9S+92M6X1gdjHA0tzGbFEYB+rulrMXpDCR8/kuhbnt8USfyEw3G3eF2+PxH9B/tZcHcJGxmZc0yf2lGSOqGZGKRM1i/xVfiKQS1EANIQp3+nt+EofdQ2r4jiVKWrK11+/z2eVSsnaBA8JFTKimLZ1OoTl987Kg4WaLXDYUTrCyl1GwROlr6nf9A4bL4e34INo4YaJ1Bgj0mjtt6kyi/Bt9Xg6wAfov5GaM3DyH+Ryes/eDl0T/AOy7ER3pk669rwcDbmgCikSrE3wY4AV/upSpDKf2lwX3A/NtkngLigZ8l3GmG9HeMxgVAOnv+XatZH8hdWERAmbUxrbebEKqZuLtW6kb+0SqgngGmVlIKvjFIoiN11acTd9kt2Z91xx1VS+SszkksICSLrYIXvRqmVkAt9uHJAeozOdzo+UHWvsJaoZBqhJq9iTKse/ivxn1a3QhWxdlgVU9BQLrdBa7Sf54hj6jDbayAkNWPFzerL2XH7bQhzmcvrVTjxK3ZfcgJIuB/cLclePfXhVlB+ETvdcGi2Yu/F3BgZHKSHpVHcy3Ul1HGAw+hrjt5a0hpdFKl+fxWSei/sIia0Im70/hwDPzkkgcTAAOwtt082GRadnnWtYt8ioxRUNwlxOkUs0vOk3M8IV1LerNMQmEzPGHiAu46lsirQHak32R5GM2wW2cjSYanahK2XbnadMHAfFiJE7gBRKUiU5Goy0XEFiPIWbf+q7+StDP5O7cZiGCROT+s5rs17cmXb4YLgd7tCA9/JtCwek/PQGd7nL7wNVUlwBD7BqIjGbRWBgbB2Ezo=","layer_level":1},{"id":"6160423e-0318-494a-afdf-c9f71305913d","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"功能特性","description":"kami-spider-features","prompt":"创建关于kami-spider-monorepo模块功能特性的全面内容,重点阐述其作为Python爬虫专用基础镜像的核心价值。详细说明该镜像如何集成Python 3.13运行时、UV包管理器以及预装Chromium浏览器的Playwright自动化框架,支持复杂动态页面抓取。解释镜像中配置的清华源加速机制和自定义证书支持,提升国内网络环境下依赖安装效率。描述非root用户(appuser)的安全运行策略及其对生产环境的积极影响。结合实际应用场景,展示该镜像在处理JavaScript渲染、反爬绕过、高并发请求等方面的优势。提供与其他通用Python镜像的对比分析,突出其专为爬虫优化的设计理念。","parent_id":"3e5a6a0d-ff7f-445f-9d0a-2fe8bf1feb37","progress_status":"completed","dependent_files":"kami-spider-monorepo/Dockerfile.base,kami-spider-monorepo/README.md","gmt_create":"2025-11-09T23:07:53.823899+08:00","gmt_modified":"2025-11-09T23:13:38.929392+08:00","raw_data":"WikiEncrypted:ASPW4qx/mEg7V7YbLjHCJWkJHOqX/lcen1IAor6p/Eyr2r/UZFv0JkPz0JCSgDS5ZpbZ0BEqfhFgxyPhba6yw4yG8/DPR7XSoopfan2gDE3meZoIL4y/Wc+sPWQ8/1kMSaLfOT5nCejS1+ChvQ7wmvJjveLzs40wXGIe0A+UCGsZ/cMcCbEyLLZPcaWy9W13rj062YqDMcaKllEiWPbHHI6J9BA3M1SIms/JAOju4tZT1TdNq3Jal5TrYX23UBtYLskxGDuppnwFWrO4/yMD/mO73+KyPd3rJnT3cCAu3oiDNq82LHKHNZoR9LsHmg4JuWFHp0iUm3ffoe23wWRgAPnjI8Iz5Du9Uh5wPmTRl7vNiw3M5WlqArZB5HxfIfd/bgWnZ/h87AUzK+9mgSqOXI0hSW/QR/VqAJ3fXKvwOWsvygBG2Y2JdMZaWlEKkNfsMfLHkwvgEPHj3Tso1xZICO8TYJvbjBD99ogpUYS6zPBeZ8ay/l2NLxlTW6d27hJQlbaXIhe9dEvVOx2/8OLoSigQ7A7kWkoJ7fN8g+Gb8tuLYD/Sln897mNzCOqUyfsGrbqM1FIQ5u+J+7kIEkIFUAaqMGBp+TYIvEyU9u57FMFxcTRnpXs7itmCfkXjs517A7uskpIOBDaBMe0LjsjDIbz4Gl+GX4+ASIuS7Ix7gH1bnvXZDkjBeAtOFNKkafCuNe+JTHcilP5X2YFtip5A+UhzLfAyvXBZE9YBA6lh4ezV0tgDInfnOMZTz9Lb5TlxbdZLYmQ2iDXLTCBhVaLkiounzPCHAbPCJOPvjNEj6B8EO+8qzhp7Ct9JOE0wfT26E0QzHs0jKw6IB82BlJCkRb3Ble/wv0TmBT+HonhL4IoP/u5qIKEzeb+h+bKyvtXxcZteBUjZArcydLhH3TmmYjzz21ZXzSeK8Ma0bbnAUGLj7FG6UTTuOzIM/eGPk9nijiJhTt+sRoPIvy9gQ7E10IBLPO7KeE7EqBbahjPH6kArgpRsp4XzxunCkxbjfC/Jd+2T5V5rD/eTSvL+mlLCZhGVAM/PIA/jq1N3Z1aPzKXOc62cQQSvbsLFyVlbxWtkMa3pMHpJm8Brm6b4l3XY4Z8FsGdaaGPMQdMFaDk1XsL99dhFeKtg2ACaF9IZP0EX17z3WdNslzTS3uujtRAdrUGGCyhviOS9zXMA2CNk5pBs5k/yQ1cZ7EpLTnEg3YmYS2LcfiyggpeNPx10MtGqWxvkMfy3hl/wvmKB7PKOX0F+Ot5EjK1nRZ57op3udv+7TZ+dxgAIwKdqj+7TIOC7aVExF4mdx4IcWZ+YpbQhhOWQWbcaS0z13KmuP0hjy9wmKqYltwitm65QRBAqXYCNI7NIryacuGQD2OknOdKbwOmnj2qlp3SZxP3H4oC0pzCy","layer_level":1},{"id":"78097928-b28e-4f2f-9fef-370b9329d92a","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"alpine-base 模块","description":"alpine-base-module","prompt":"创建关于alpine-base模块的综合性内容,重点介绍其作为通用Alpine基础镜像的核心作用。解释该模块如何为上层镜像提供轻量、安全、网络优化的Linux运行时环境。详细阐述其架构设计:基于alpine:latest的分层继承机制、中国镜像源(阿里云)配置、Asia/Shanghai时区设置、非root用户appuser(UID 1001)创建以及自定义证书集成。说明预装工具集(curl、wget、git、bash等)对开发效率的提升作用。结合Dockerfile.base中的具体指令和build-base-image.sh脚本逻辑,展示镜像构建流程。为初学者提供本地构建与推送的完整示例(包括环境变量DOCKER_REGISTRY的使用),并演示在应用Dockerfile中如何正确使用该基础镜像(FROM、COPY --chown、USER指令)。为高级用户提供性能优化建议,如镜像缓存策略、安全加固实践和CI/CD集成方案。引用实际镜像标签alpine-base:latest,说明其在微服务架构中的基础支撑地位。","parent_id":"03f420dc-94ba-4438-939d-b3cbb95856eb","progress_status":"completed","dependent_files":"alpine-base/README.md,alpine-base/Dockerfile.base,alpine-base/build-base-image.sh","gmt_create":"2025-11-09T23:07:56.008576+08:00","gmt_modified":"2025-11-09T23:11:54.505487+08:00","raw_data":"WikiEncrypted:PUwbnKv+OblcItyhVdInwlSBDDVBKSI92baM7SJ9HBnHTqB3kWLd1aBN4kZ0blEixVWt0Rg9Ovzq08tOOpHaInm5xMD7NOC492BL44IwRLBRbWO/vwkeqEhMRXHLUzysYm7sB7Oe7MvxloFQdM2eLAP7mJz6dgVmkgKOsjwTFAqysiPC7ghcmD92QFbC1Czai+2doCCbIUkF1tXloNo5ZVQPJxpLeOXhciOZhHYaQk833VrCTiND4JrJNxZ3E67lngzoD0/ZsKczw+sm7aK+FZmf0Uu0kqxfrb4vkK2M/C0In976+NDLo0Uq8R75uUzs+BChA9dZYgSalv3h4swpQI0kdAct5onxKr/OTwdKzwPxxSL7Psg/TxEb5I+jShQ9DtslqnPsbdZWu8LeW7QW2Q4Na7vJzSq4K5tgWLYmtlivlA0Zb5PPTZJ0cbOMz3suwc6+fV6WyWCJBfpeyS9FVLfxajCFlrcgj+0x+NYyuLMUnnHNvJbIx08QUyYZypIqlGMPeQ74DzqvQDhBv500CqoRvUXzkcsgxDDy/gZ0zS8HrfYI0D0NrpNzMAMcQgGCdvq7k+POQg5gPHvxCHlrGI6nWBKL/7+O/P+IYPygNGBRRyR6Y4hBXsbbyqDL/s5t1lIHFBpCrPJs5wQLsG7MPeRw9z+qNsOkG3kw/tVf40YGo6MjeqdSvwQBKh5WvTo7JQfmHrCnUSqs66yItAXmx+OZwXBxU7Cc0Ay44QfaW1kdQJAyv6QXInOlOLhaa6TLt/Ia8E259O+EQQrFhDjhyxjnbW0J4T//yQdYljwiXg8KvJRe8j4IAj0VyXuHubK9592ZMo+DJTEgC1AjgQuCIXQQYhEZ+wRhsqHI5nALI5YABIpivhYh6F2TQWUwWUZ0fAcAAKgA8bkrbWokxLcGyI3etyXoEH8+8Wqj0K2PYcreZ7QcszH6tK2TbWss7JEezk7iKfXTeeWPelv2V7KcduoKZ/Y2dNHXBNAGCeSQsxOxs736Ncn537rja+eGNfqqRj14hA/NErPLt7I/tmrUbQSi5bTsY0rvPqyKobK5zYgB23U24V32rrsr91PFgqfjh+88jeo/7UuwjXixiGWx3vFF9SK0+cn6ybhz9QfCef0/YOlhTDuKOrh8GVKPpaCe24A4jF3LGi6AwdPdPeO4221ZuMiV+V6RdEqS8GkFk+fHwFraZChH5aaVQXneaDSiBTcRC8ye2bLu58jvoi69rv4jgee0PyJ0l9Gr2xr2CmmoFVzmfFYSJGYvwYar6vj7RH71snf89BSQJEJrcnYGRlU56uOYjAH/EAELjdog0Pc1Ha0TAJl83VJo0nPL6QfLjCKtV3MlNXKwspTS4S8zL0INLW6LGjbLqrQezowlVt0G8lqog7Epx/4c+ZtIAYnTswUe0yzKdqQ2KDL5JTYILVyr5ysCgoJJ82xcWmvYsnfLUnq/2zwYITeChecaKxqCErAkaTuklryTjoWFKA6tSbzDOUlDeWGx2JNgAemC6JRGINxyvfHxgHISXHAksqdjOJHcSIj25MUxFe5Y5Aa3g7RuDdGIuN0biJIdibPTSMO/Gzu7FUk9v7kS9Guz8Fv68Ybp/haJO03uYbfnQkwOhtH4YKRcIrBULcMekfW/U3xQ/xaqaimB/d03E6UPQwhM6lurdgURgEizvk2IDF2xhS8MRlluz1fTKi7ST5g8sdrE+kDp8hWcwJdDbpnHPPJBgzRBwL6d1ezDfeuGLVNUexb1IPtBhH82+o9wa7qQNjHhaIdw3HWP/tznnmcrBGxPwLbdZffXjP1jZ6wutCJlBpJIiM1NJypGFgfaBl2aW0anw4spVB4845xxjc/bkWs/xxi+CmtCEuSj3pletwymUe6zgi33rhfuFeCK9tgGP7g=","layer_level":1},{"id":"f53cebe0-d1f4-4508-a612-12121007a602","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"基础镜像构建","description":"kami-gateway-base-image","prompt":"详细说明kami-gateway模块中Dockerfile.base的构建逻辑,重点描述如何基于alpine-base创建轻量级Go 1.25编译环境。解释多阶段构建策略如何分离构建依赖与运行时环境,显著减小最终镜像体积。涵盖goproxy.cn代理配置机制及其在中国网络环境下对依赖下载速度的优化效果。说明build-base-image.sh脚本如何通过DOCKER_REGISTRY和VERSION环境变量实现动态镜像标签生成与私有仓库推送。提供完整的构建命令示例,并解析输出日志中的关键信息,如镜像ID、大小变化等。结合非root用户(appuser)的安全配置,阐述容器运行时权限最小化原则的实际应用。为初学者提供本地测试流程指导,为高级用户展示如何扩展Dockerfile以集成自定义工具链。","parent_id":"3cd6b111-cd55-4414-9a4b-23c4ecdd4953","progress_status":"completed","dependent_files":"kami-gateway/Dockerfile.base,kami-gateway/build-base-image.sh","gmt_create":"2025-11-09T23:08:21.22698+08:00","gmt_modified":"2025-12-17T15:28:50.338308+08:00","raw_data":"WikiEncrypted:Sc+AnokZklSlRQqxQ+1Oxosh32zgWTuSDpFLL/W1QKSvSq2IQzd/6V7Hm7KlPgOkhqNSVi0SdICrae1ood55hedoObU2+eNEEkjlruDfmboVRj3GXTZT6CcojrMcxqtHiG7oLe6z0ofdnv0noTh6ObVe0GuOu73lTMrNmLwg625F1kLAijeYr6WguQ0yMrr7IR2+etGtu1telrlJGvk2gqWWkjebBO+BWkSmky7/hErGrTGQAcoAft0CxsKWNWOruM23Ny+hB9fnL2KBuwny2anwRSpviAVjnLyRI9PqmavLMkxMa4vyFFQ66zFnFvMSVQoAuGUPkeIH1B68736vsqK/WhEUUQeazNZFFxASF3QhxTD85uR+eci54IpbTK28ge59q/cwicwA0jLBHrfO5zJ6BDoZoKUwOuRSndZ7BxETcApokE5XBD1JnU/SFXJO0akXJUbi/vugqxeJbSaW/upCbGmtQI7qHN2YmXnqVAcDj1QSEN3rN6wW0NC29XYJRHc6BKw0VeyxQ83mn/bpA7jIlSHH99fdXZWdRc8SPUfrO8T9u1UvB8nfi2PCSw6/oerDRoWdVhePQwJJ/2wnGdsGMpbEaD6MhXhEBBpybYZuJBTFrCm/vGJhy1mkfP6O9UI0KHFn99MSlm5/kMrYuD6anLvqIu+42IJi9TMFBptOUF9oww6I7R+Wcot1tjnZvwimRh7+t/sSDfNEbPwMNQHbS5GOSxzOZbDF4F14qaqYJCLJyWMPeKKfYTF/EY8ssZI7rqcrB2Grf3TAhBiHij2r/Q20mTCGbv/dBNp1pOE/ieLo0Zvw9k+MS8+djouEU43WBKTmx1iWp84tTKdKxoWRaDwpmI7Lg1Gy86WykpQXhkfhHq2mOxgDs0QXRGJKNZk1N31ZY3Efk5a8aXETaTVtvklgJrDgBBfMjU3Uhi/KD48IAbPjDhXJxSQ7v5nB1tai/QGSU+T5H0K51kn/9r6gaLIlkQFxf8jFSn2omffBGvmBH/DzjNiEMrWDz/IglOnwLyxlYaIN4qU6iYqckYgHIGyxOZkS8o3SbarhZFPMpkZeTtJXAHSu/8kb71yqY5btEJMW8QXDyHM5TSf/xwsjFDt17eIfAkjGADfrClds0UAiaZOlqL7KiN6PmDJ4+UXR9XHZ3glkCXFQjCp1HSnFlEqvpWslHm1WWofJ0E0IZ7M19RNwlCVYUuU+yLurU5CR7Yar68O9R3jbgx3KAhtt40Hk1pRe8hh+aP0yD5CurZB9O5OJ0o/MlfiXEi07w5VwuMRdtnsn1JxYYa0igxYBGQk2Zc38ntie+PCzrbLE7uI0iHv2bvMOWFMOdyRUZlaSfvZPb8L5EsuGa7M+GTT/umnD8H9PVpItWhgmq2dY6YbS9xX8jY2lOzB+pJyJBm8tLI2PDe0hyoJt0LFhZ3TvhxgKMl35uyjinBktAySfxAsn75T46Hu24u/AkgRSrZJEb0oK0/OfPqQFrJgfJ1loLKLS52QeSXGD9vpbbfPZP4ld1I6zfWlm6P7l1qzSzHwmWTIhKDxd3Igm8xQljy8O9BGxaiqgN33HbGKKnHU=","layer_level":2},{"id":"87858ac0-b4c3-45d6-b46e-5b9aa92027dc","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"快速开始","description":"getting-started","prompt":"编写一份面向新手的快速入门指南,指导用户如何在本地环境中构建和使用本项目提供的基础镜像。详细说明执行构建脚本(./build-base-image.sh)的步骤,包括如何进入各模块目录并运行构建命令。解释关键环境变量(如DOCKER_REGISTRY、USE_PROXY、VERSION)的作用及设置方法,并提供具体示例:如不带参数构建、使用代理构建、推送到私有镜像仓库等场景。结合alpine-base、kami-gateway和kami-spider-monorepo的实际用例,展示构建成功后的镜像标签(如alpine-base:latest、kami-gateway-base:latest)。提供在应用Dockerfile中使用这些基础镜像的代码示例(FROM指令),并强调非root用户运行(USER appuser)的最佳实践。涵盖构建过程中可能遇到的常见问题,如网络超时、权限错误,并提供解决方案。确保内容简洁明了,使开发者能够在5分钟内完成首次构建并理解基本工作流。","order":1,"progress_status":"completed","dependent_files":"alpine-base/build-base-image.sh,kami-gateway/build-base-image.sh,kami-spider-monorepo/build-base-image.sh","gmt_create":"2025-11-09T23:07:27.827352+08:00","gmt_modified":"2025-11-09T23:09:18.775219+08:00","raw_data":"WikiEncrypted:qfgbutC7oyxR6nMxrwk1ODnNMBEQ3/sG78fQT1yXWju83LC7H/jAM8CEAvWT8huE5OClmQiIfNYNxHQ9s7RRSz3BPo0TFNlVbmInM5lzUSEEf+YI5BGx2KGN3d+G0LQiikAd/kU5aIxOEOguyg/vW8SkM+fOFCqFOxf8LCU3g7rZYUFF2aPDGO5G55zdtkToqcphhDSRmS1nMpftopCL2t5+g0kKGcliYFzvMdsLTTdKtQbSd+z4ihO59L9IIbI3dEyyPXPXZcU+FsJIGHD0GVErBITS9+r1yNARs9u8Qt6m6nyfIo9WAIpfQjqawIJAwFIt8x5pr8Cnk8eeJ+TDI48ARvDFhZz0404/Qi5Es5iwEV0gEUvmtOqeSZ5jQs6Ts67BcKsQWD09KRy6hR2Rzkf5tnxKnKZ/oNt9Z4vZKDNi9HHxEKDw3TB7voZuErlgm9DWx0Jd4kdsPTKsBpk3ebLD0Wlhebn9yGxGYNgnb6J1Nl7tKRnBOC97m00LIqKnH6530m6yoJ/xci6RGgWsahBWr0W2+9nt1GViilFsu7agurVWNgGyS7xM8xzY0nUTBA8QpTkilP0vqG2/46Osk2zjP98ZI5uxTEfnhCJI5oOnJybG3zyPOgquRfWZs9rhAysdajd/gZOdtx46cU5daVqkEnpXoR96fv9pkxG6VTp41XTD8HFts/nV8K7hL703SEVpXW2B3YIm7Q8ixmA4khLDxf/ogYEmK4WLloCmRzbLTbIsTpxcY8SmEZG0OiRPkxHPErLOPmoM33h0oiXepG4b4hmc73a0OLga7MZ169yGLzLzVhNuXP5ddq55KEzfJjyk5te9C6rALx4xGOc51ESjTWX+8GOoV4U53a9GfMkDfbes6ksHT1t6eCMzS3WIcSk5Txv597YeOhFpxIzsjOTXvZC1Mm05NkRnVPxMvNEodgjb9Pl9cWleHXLrQsUR1ssXP4Trd7rwMtHg+GgCyn9Ft4RqKBoGm5apag3TSuWWbMnV6yqFV66HyFw9WIH+iHJHJV3nS1/gM9SUCfRZETYlgbPqdmtrBThbzZyViB7Jp64MOZyrn4knf6XEcQkANnpvWSOhGANoiQylfSZ/i9W+xB5ZsJZUHJ1mzV8hru49s9MDZ+4+9T04Pd41JM9FnNY2Ce1tq518im/AiBB1WVheYjGa3kzR7urmMpXvkY1LpLyQ5x7E+hilp3VWB6IbAyQwwurKT6QnTJTe8SAjOQJLFBmZrduNMnL9GfTC2sou08khrs4AJu8BYgHGZeb21CIYKw+5MMcuquaTrW42DOKL4+E57khQE99OO32pedD1+vZ2QM6yAySIXZMjCUsd5XtVE42vdeCfI3upRyfmyc2EAwKabgiXJCI/JjXPSv0E813kXqWU4jjPRksSnTGra0DJmgP6OJa7HB5fuA2oFXkGlEw19ez8H99mAsGBSyVtFJJmp9bWQuGYkjyuQn00kVg0BIfSn6q7GA9MkelNpD0mmZYtdY+d1UCKI7kmIaQiC5cN7AHEUS4FFrE2067o6bKN/S4ztEDpSwHKhI+BpsS+jSo/2riPV+lt42QZhMiczrNAHzlMiQZKl2ftPwXoT4sz/5IAlOJ+hfsNrK/GBlkMxg32F1Vnbqgfz4zadBXejUTXHeq7tZ0Fct/kcBUUYuRublrSb/tdQ0VwUdcTje/qdkHcVWH3ZlqzCHVyljSObHji1q7kBk+uIBgI2Tv5Wwl3lBrOAY+8IQRFN5N+PxdbScvkr7HDKPo/U34UvApKanzHN466s9BKgTey/WnV"},{"id":"c24099c1-6bfb-40ce-9315-6fbc1e8741d7","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"Go依赖管理","description":"kami-gateway-go-dependency","prompt":"深入解析kami-gateway模块的Go依赖管理体系。基于go.mod文件内容,说明项目如何声明核心依赖如beego/v2、sonic、opentelemetry等,并分析间接依赖的管理方式。重点描述Dockerfile.base中COPY go.mod go.sum ./与RUN go mod download \u0026\u0026 go mod verify指令的作用:如何利用Docker构建缓存提前下载并验证所有模块,从而显著提升后续应用构建效率。解释预下载依赖在CI/CD中的价值,避免每次构建重复拉取。结合go.mod中的toolchain声明(go1.24.6)说明版本一致性保障机制,并提供依赖更新与安全审计的最佳实践建议。","parent_id":"bed2c9b4-de63-4b03-8187-d62744475754","order":1,"progress_status":"completed","dependent_files":"kami-gateway/go.mod,kami-gateway/go.sum,kami-gateway/Dockerfile.base","gmt_create":"2025-11-09T23:07:52.902882+08:00","gmt_modified":"2025-12-17T15:30:20.242909+08:00","raw_data":"WikiEncrypted:EbhjTs79FM68UByfZTEy9DKslWgTFdZKSf9ULwyECH74dwIGwMw/VKcP97AQq74o8Ucr5FDSQiXSr2/Fivntc/JdztcPwOjxGHA7gQIw7NN0vjxOOk6bIhCxM3cX3RDY5SymPO/pty2nPro7B0rusZCuLTGFoaPmW2CZQqxWUSOPiO7iuAMsUgnnHP49aElT4ZCJ3ifhMpy9X+bUWmPwcM84m2APxzZeNx5mfaAZOQFKl1c7VcsP1b8upuEo3uSRbs/T4HYEDgnObamNSeGhMNyr1kJIKFTAfl0tdF2PX4pHjLExnYt1p9s/bNNiifZEv6jOncJ3UNdDX/36cor3oQcAWzWnA24At4b9Uibtym05KYonF7qA85Wcle14Y5OoeOYhG+l3KB8+tgZPctm89Q8Vq8YFi1/Dj6Ky7NrZAa3lhRAMamzzwokL0cQRtqGaeZJnsEyXvHWPSWrVY+Co6Yrt8uTYiA3l3qS7gQnu+WC82PdEjbAqcZsfX1q2bPEK2wbAK6ErrhuXeR8xyRB0Jrk2g1LFX4H6z2LqUFhi89gvzV5p1hqTdXWUMauEEjHw4m8q1EQ2t4aQtTpm/Mp/YkqqccvNGmFv0/DlZaYbrfapz48KfoAQVDOe3LUkOQfui6OEM/J3wWoPVeWJ+5EjTGk1xIqitKhenpZRIwrkafVbUlgry+t0+skr6mBD1diWVkxNC7oN4CScnXAxjyQb1q7a0Nq4PBJNKMyViukH7bmaSHWIoui6BVhwoKyyITqo2U6NR810Dfb4GTaFQMMF0wZCgbIPoGMDlN8xgM/nuBf4JvYtVGY0a7rR4Q8qrVhp+TDoTCww3yp9BccUoLETmpcX/KvmuGfTOR3QwYglmGlH4+85fcDDXIJjQ6cNhDeOpjhIzqUrp6C21izXcgQ2oZXqeVaZt7vqftr15yKXr7mymaDadXmPpgRPXTU83DFrET+O6X80HN9dH/mh7olk9qHxnYeO+KiRoQp94/GGsmizhKUZyoQohoPwt1g0COrAaoztNrbyzZ4Ua8cFdpiIk97QH8Vel75+DG0Yl3HhcAoZWxQCo46bc5UJg6LuKkgwhLQXV7nWz1NOhVb2Zbl7hnj9eE/ESaTYZ21nEAbIyzJTxi9LhyBaxzTprWDCCQ6S22aO61IFr2QuUBrD46YqpMtPgm2iBvg2b6EH5IG+3BtztuxhUrnzB5pJU62P+XZTHs6Xuas3hRvsqDypB5k1QAgOkFSzlo/wVblRLdQ8/WCDXQ9NT8O+amx0jCmyBeNd5H8yf5C79UWX2Ehgzv1oTSHps8oKp8vMAi4gSjCZkpH7kT63GpBqTCfR3ow6glbjf0hvSXZJAPiAlVVWnkypUw==","layer_level":1},{"id":"2fd9ad61-bf0f-4453-b139-5c069562d31d","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"构建与使用","description":"kami-spider-build-usage","prompt":"开发详细的构建与使用指南,指导开发者如何本地构建和部署kami-spider-base镜像。逐步说明执行./build-base-image.sh脚本的前置条件、推荐环境及常见问题排查方法。详细解释脚本内部逻辑:如何读取DOCKER_REGISTRY、VERSION、USE_PROXY等环境变量,动态生成Docker构建参数。演示如何将构建后的镜像推送到私有Registry(如git.oceanpay.cc/danial),并提供完整的命令示例。说明如何在实际爬虫项目的Dockerfile中通过FROM指令引用此基础镜像,实现快速环境搭建。包含成功构建后的输出解析,特别是镜像大小信息的解读。","parent_id":"3e5a6a0d-ff7f-445f-9d0a-2fe8bf1feb37","order":1,"progress_status":"completed","dependent_files":"kami-spider-monorepo/build-base-image.sh,kami-spider-monorepo/Dockerfile.base","gmt_create":"2025-11-09T23:07:53.825039+08:00","gmt_modified":"2025-11-09T23:12:40.584346+08:00","raw_data":"WikiEncrypted:ASPW4qx/mEg7V7YbLjHCJaase6SWJf8POEQo+2KlK7RLQfu4SUoBzx3LBQ3guv4YfBxmo+GbJwYhf90f9DoHdoYnO8lBLiai4JEfBL5iQleF4HRXvJ/6zEEKTLOxylsK3g6WmMleSYAtnxfYBuNjdOAAusq91qDeqN5fwtqqN7JUsHCWB7/yMLBlRc1bOZhB99s2i71b9gaWBevRVZIUyPo9VoriY6uLobBkxLACgO3YbezF1Obq56cImdx+Pqm9CFxen17tWQvWtHMZ8Y6D/QhRUuGgzJuwJPE/lsyfRt7JPErweR5/SL3Cx1Q/lFln7ecL22DgFRkia5EkFjop5PYmtAJcOawTpXNAao9CcOwDGx3hldtf2ER+c4rgtKCNW57yeann+sct02PwZmrV+3litWE8o/Gvy1oRLTEfRRV9fGNeVQONvOuxD1/aYlXx5clvsArjjhkC+M2VcpXFlyF1wRbO77GeekjHfsJs/39sK9+ImLAxmoiIXZ+sP9qWYZUEgqb4Y/pW0v/i3mx3qr+W5tyoB76m52zlylSoYnO752uNbpxcdsxZINqQ7XZH9NU4WJ4YFLi8k9Fo37a1BChwKmGYUrVLSizm2vBYMHdZJy3SUzOYdLPRFU2IVMesHcT3NqbsHNJRlkaJ0M5ZBJPUUAsgUpj7ZfejTGLhbnvoDSn4TQ26OtfIlPiNxYkK2MA27zhgw+d7Sj8gp0TyD/WFKTN72T6/Nmv9iqcDoscvAreelp7HoGp4wvyPlVri8bvadAkzEJkm6bZePKH9IlP6zROzfkdQWhKi3kTsVwqSy0tVqIze+bgpQ5J/J7jutb7rXlmDzyfQz9c7My5Z5laXxtV0h8aMW7TgZUYYK6wdaP5rjim24Z6sjVhGFyUWs6+AxwRYNcPRN754GJKm4Z9pVulu5HKSiKGLxFvFtgQhxM/6W7AkZDn+elY7lvJxcyZ9Dp9f72WpN6VbXVQwdaFPPOu9xqpxejfsd9KZlr9DYXlGP1qvz1h8KW6IVGKr6Ox0TvER/Jda3ZLhp/qXwooeDGQv6zlJZn7JjFz/YnE0Nod/sgywQxgIshxFyzDFX+FDTr8PHL9TQLB7ci86c+cMncdyXVAksRbbZdru9gGiNacTi2iGcikCP2L7KmC4xYlUCLdIebhDXU+gfqt7ztuLl6u1UTlKHf09f06FK0M0fAvuMrp7ZxwM4wABh3XT799AECuWKjAG0qrWeKjDgLUNQF096F0zNuWrg4mWgzxY10B1TU//nRnOYCzIjAwT9N5p2pVAtt5Z6Er9QhVXCyGqdgkkgz2oQ1RDkJH9NCWHnI38RHNN1Cv6i5fu+YB1q3quES5TvNyoKz94VCAeV8q4GQKpaPVkw8000VDOAvM=","layer_level":1},{"id":"3cd6b111-cd55-4414-9a4b-23c4ecdd4953","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"kami-gateway 模块","description":"kami-gateway-module","prompt":"开发关于kami-gateway模块的详细内容,重点描述其作为Go语言网关服务基础镜像的实现细节。深入解析Dockerfile.base如何基于alpine-base构建Go 1.25编译环境,包括goproxy.cn代理配置、go mod依赖预下载机制及其对构建速度的显著提升(10-30秒应用构建)。说明build-base-image.sh脚本如何通过环境变量(DOCKER_REGISTRY、VERSION)控制镜像标签与推送流程。结合go.mod文件,阐述依赖管理的最佳实践。详细介绍Dockerfile.improved中多阶段构建策略如何优化最终镜像体积。提供从源码到镜像的完整构建流程示例,包括基础镜像构建和应用镜像构建两个阶段。解释非root用户运行的安全机制和环境变量配置方式。针对高级用户,说明其与Drone CI的集成逻辑,包括变更检测、条件构建和资源优化策略。使用kami-gateway-base:latest标签作为核心示例,展示其在API网关微服务中的实际应用价值。","parent_id":"03f420dc-94ba-4438-939d-b3cbb95856eb","order":1,"progress_status":"completed","dependent_files":"kami-gateway/README.md,kami-gateway/Dockerfile.base,kami-gateway/build-base-image.sh,kami-gateway/go.mod","gmt_create":"2025-11-09T23:07:56.010266+08:00","gmt_modified":"2025-11-09T23:14:06.580157+08:00","raw_data":"WikiEncrypted:rEAPRMs+W78U3NolG1cAjsS3+J3juI6CT146KDRQuHCEzadbEbF+X9BWt2fiLZ4lKABFILeTWU3jK6x1YwItLgstJDP0TC1lMvIDX3dO+JHaH3zI/JVstgmQE99utx5SrRwQ/Jc4z7w7N8/QQmTQcRez/2ZkSyw7HrBacme73Fx+/avbyXnyToy5bF7K9FpPRp16KAVovDjWR5K5moMu5EbgfGSW4ZC+Kxdko/gqgjXTxCNU5DuhS3ENScsVTKXo3gsK/ZF8QTSVdp/bgTG/lQnzm25dP16f/e8CwWgkGSmXIvDzaoBDwprIRPxbZYk9Q52uqW1iXE8SBrc7Hdg/a7IH5DNKBU2Rg/+H6MOt7bCWLI3gUjs2rLHb4cBFVIDJ8bCG+JQftDYFUuvHm6PcpRXix/uP+XpfI+IDJelJ8a3M26JwOcOgad8FWaPeFDmdw3Zuj1rkisx//9XPQe71e4hnFhKOOe1hAEMkJed0c17wtAZ3RNrJl/xXvpf/J8NFKTFupr9xWxA7dERBEAQPL96Npc4tknL9h8ETt9MVPgbAvLRf5tShqOnGMQAeLel4/BHSvofAAfzUiTOMZj3ODhDcTN2AQsH6PBb9qzmBDh+gBMSyWQ8VOunZmAmL03Zl81ZWqTvaBL3wNwAV5cDuZBOKKDORnFspuciyRfTwignDWQ1j5YywwedSbYJWHjBuoEZAODxE6/9GOAgZmubGN51FnhAr3mRAOUxWy7XLTQ2+ezlB5hl7a7r7t3ACVnOx8AtFEgJn3bNOatL11UggYa1n0saXr6sXY6tbbCUFEwB00ZTIwGSmQpnh1fIp/PJBCqr6l1xVXyxDRVV+NPee1nWla6DykHJrnbkHTKXebSFsL738wR0k3m89/NbHr1+jSzJGx0w7XgTm0dxyaPelO68PQXbZZPGbB8/isfEsFvEcufvN6EEGpsCPvTiiR1+zfEvjjZEUpzn6V5+VBCxM0/EsFfxRg8hs2kuwyKPX0pHANd3Kb0xb+F7gszrofEEYdKMK7C4tu7qOwJuydqTVlZ5rM6hFS+w0b6Em12Ad+fYtJB2FWaA6kqu73/eKUhlrRauaXvKsgpTEZTaj15+y9o3SoNN7SfOmhwpX/YXmfyPCb+TFxjxE0ilc6pwRQXvBwSverBrp/rRLm8Of+wfDHg1sZ699g2isyQNlQNrBpWvkQCvUGP/DTkq5PGy0i4ti2yamrJifkXteOfkNTs+tgc7Gb7XCff0TrCKaM9cv/xj+w1Zkk9EXbXMvNb5/2+/Tmz6YhozfWP0jd0THRvUgL2Uo3aScMPfxAiaBtYQWhQ45tzym+peNzv5aSLHlZUwAAZLd5h36cQHMFwXLK1HIib/ssiAdKMH/k8i328jLzeGTkjGxKhRx9VXSBuHPanz3DnDDlfRU2fWZGAB7FabHhyczINS8xaWjpdBp9lrYZjDh1Cnp7uu12cSu/DOIXCYy5NtMAqH1z18vPtr4j5kxjqEjDKauQGT3WHlsWpBuRk/Hi5C1zZLoh6aEyttMkFC5HCcg+goHehdTfqP09EjpC/uW7mpuIvSwGi53u4dDKxXN4RxFgJFwM39zjF719BuaitsTRq/NiVm78TDNrd1G2PzCxRaeG86Li8K6cGLOHlsebeGRd2zIX6Q621TdBRzIhijzwVDcZdqrVoBBrCGnniYHJeF/8FONcY1XXcKu/xXvSB4I1hpyFqEh49kiUL0zxfbi9W8d04t5h/LOghKf8q89J/rfdkrWDkhw3RT/EJSTf+XFGOa9fgD7rB/A8MAKZsi8CTB+bbngnZ5NQMrSx/2G7Ygip8LyJ3ems9Z0PFKxhSwCc2uSs13cH97LpxRL4VkRw9WGJoPkVBtECl8JqYfa6QGZuplUCgvZhj1QB9k=","layer_level":1},{"id":"d989e9db-0336-45b5-bb9a-08c65211d8cb","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"Go依赖管理","description":"kami-gateway-dependency-management","prompt":"深入解析kami-gateway模块的Go模块依赖管理体系,基于go.mod和go.sum文件说明依赖版本锁定机制与可重现构建的重要性。阐述在Docker构建过程中预下载依赖(go mod download)如何消除构建时的网络不确定性并大幅提升CI/CD效率(实现10-30秒快速构建)。对比直接在运行时下载依赖的模式,分析预下载方案在稳定性、安全性和性能方面的优势。提供常见问题解决方案,如依赖冲突处理、私有模块拉取配置(GOPRIVATE)、校验和不匹配错误应对策略。结合OpenTelemetry、beego、sonic等实际依赖项,说明其在API网关场景下的作用。指导开发者如何安全地升级依赖版本并验证兼容性。","parent_id":"3cd6b111-cd55-4414-9a4b-23c4ecdd4953","order":1,"progress_status":"completed","dependent_files":"kami-gateway/go.mod,kami-gateway/go.sum","gmt_create":"2025-11-09T23:08:21.228192+08:00","gmt_modified":"2025-11-09T23:17:52.274958+08:00","raw_data":"WikiEncrypted:rEAPRMs+W78U3NolG1cAjmvwKXP9N+vDp5uxJqbjq6g/zQJ3dm35cJra8sza+QSzCOjcM4kgwQe83rG6SuQVkQwozFwxwYlU/QzPePb+brTLZWiKO81fwBPUekjHHBZtbIsAlR/plv1BQaM6ROSCZQzSTCzC2MJC+zkIrM5yunxMM81oT+sNcWijOxAgtwpC1bOod9l/zdzTJVn3+9vHnW4RvUQ1jMUNF4yS5qfI28ngg22RzwPxjEDCMdve9rT9RNofBGjI6h1v2y5wt3M5ZbENNhz17T9vGzWXItLx4oS9GyCoZA+3D4w6xeKIhBek8mbMpnxPk153fmVeRSDm8aX/vMlN+qv2CjS6bXY1Y6wMB95P9q12/XjVwaXuVoQqlmw6PtguZ8vkvDBYNOV5oiwfqUYA9M+uvqBLrFjpiROREqpqXFBiBk8Z1nNeG1RJMhTlTefbSEs+rxzI0bhJXvP9LBC3SmhRfz8p2IpwrYkV2lz74QaYqMNud0m9ug7L1z/jknxh5e1bO66OCFMUOO8ANUcsZ5T7ydVc4IbVBaA+fdlKF2sVGfXszXc1loyhSuh81oUjWwiMCaxA7fj46jWgYi6qPeiCPIl3cxyBe7yuaL508Sfh9tyMOnfp/ecbvOW17p6KYBycQ5ko25yNoRzBWYO9QXUeH+f6rM0Fzbv+bLpt29vjyCz2cStl4m6dH1xzFvIT4zJGpuJivjPZN7qtCUxW4ldG5X5iOckgNvErUMskjO4oi1XNdQpnXruH//2JCBd4vG55DsVVlYy+dEDCN/PTsAGqSOVbyo6VX/H7OXS0F0pCrz93FLTMeaBhxP/gMFqRGXTFyKIp3nEbyQ1MoHbzc5TRq/y3pxOscXcEJN4v4WfaDw4BKCtBslOFzwyqVR1QhAy4DWXTngVCZ55OP5pUG4z2PWqO2CrFyNsQdvrXSN8DIDRJUBFW8rTsTErJq9Cd7Nuwk1LEqJxrBp6Z4B8DvoX6nPK9P9rsgbn/9WSmm2VRud/J84X74xaGKsWI2ysYAxT96Q4leEykFlGl0tmXCogWJZiVRjQNr+Mq0RFANQ8HRHNBGDtpUkiOnIgV1deMdGiAJoi4QskeBGbRgvgOX/I9ZPtXERNMEKPvPlZO6+hcDyq2lrEuLJIBmts+6kjoF78M06L2E/aCGycjEJcdw5rG8y8Isy23rTIMS7jJZcw1UdwHqpbPjBwRp++uIqitN+MOWwdJa9q7die/kjcID1PLJZO4icZr44LH1mOjM7aPMcukXCeMbYd136bf+SnUshCAzQPwQ6E8xw5x8YiuBXtZoUPIXSyP6oEtprfIjebufzVxW1+DS924yjxM4Bo2KpTGSH1vg9fRVvBvLD6IDSU2h0yCYvJfcwqSOEBDJzG1kNXAag4XAcN0qCrKq0jKyIo3C/+JzORhKwgr9Re7z8O6Yec7959kSITs8RKqsWSbu6WvanJ2HfgoiSnvyeP4gzJw+eaCX2vAPQ==","layer_level":2},{"id":"7e3ebf37-1574-48e6-91fd-c38325ba1c0d","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"alpine-base 模块","description":"alpine-base-module","prompt":"深入开发alpine-base模块的详细技术文档,全面解析其作为通用Alpine基础镜像的实现细节。详细说明Dockerfile.base中的每一层构建指令:从基于alpine:latest开始,配置阿里云镜像源以加速apk包下载,设置Asia/Shanghai时区,安装curl、wget、git等预装工具,以及ca-certificates和自定义证书的集成方式。解释build-base-image.sh脚本如何读取环境变量(DOCKER_REGISTRY、VERSION)并调用docker build命令完成镜像构建、打标和推送。重点描述非root用户appuser(UID:1001)的创建过程及其安全意义,以及/app目录的权限设置。提供镜像大小优化策略分析(~50MB),并展示如何在其他Dockerfile中正确使用该镜像(COPY --chown=appuser:appuser, USER appuser)。结合实际代码片段说明构建流程,并列举常见配置场景,如自定义版本号、私有仓库推送等,确保文档对初级和高级用户均有实用价值。","order":2,"progress_status":"completed","dependent_files":"alpine-base/Dockerfile.base,alpine-base/build-base-image.sh,alpine-base/README.md","gmt_create":"2025-11-09T23:07:27.82828+08:00","gmt_modified":"2025-11-09T23:09:00.385053+08:00","raw_data":"WikiEncrypted:PUwbnKv+OblcItyhVdInwlSBDDVBKSI92baM7SJ9HBnHTqB3kWLd1aBN4kZ0blEixVWt0Rg9Ovzq08tOOpHaInm5xMD7NOC492BL44IwRLC7mSBio7Ib3VFrIXzX3iGSogaE5QSRv+u+5dJM8DTOEZSXi4RD1w8b0zQJnvQJkjXywgmEoK4xtqG59IcRMq9qjHHTbP7V423pINE/98O7VRuu+OzCkelf4swGvZonauegSpCCN3LMAFZcTD5EqSIgw0sqTDM6tBql3ev7ilfsUw8ClTm/l1s1fUA8Q6q56bcaAwzt9MQfHo+C9/sSkiOrGgYrUXQp3g/MghLY6XwqakC18oiDsMoh988pOWOF3RziXcnE00ZjgFbRJA4uYINsyUiaflaIptABx0tB29jkzprhJZNXCkVmkQV04l2vWHgrV7USmboZSQyxL+cp9cAKce8gKSl0Nk9MULzXqvPTnotCcE3r/MwlTq7MI8oNny6RwtVb5LpL0lzxrw4f05fCwYrgajplkQ7aofgot5q1ibbTtdrSGDvVfBqMOD2Y0EijE1RAMniBbZqkCxP60k6ugkHHsKqwqC+X/M7y2YrIrWFMMxD+2AvOCZ1jOmtiN4+5IeYXmueAbnhWgqHVuIfIxVO4orlgGfgcjMyUhYg9+4iiUsNmGJ66rF+wOoaXTergVc+4qY253yRhTtkVzcwpnBL3YHKqIn13NgsoJLJX9Ck4JNlT3nhY/gMJBNPZHdQjoOpeIdSnt6lXceTDo9Be6jhp1FOdedG8w/uRdtfwVL8MJZqyDv0OqbAztzRvIlHj0x0mADulx+xlXkx5CLKsdG8EROyJZCrsr8+hC1sC8xeq8Uhe0UcNfZdZuUB5MdfzJ73l4FfISOlh0Y/FecdPWWrb0tVEz5JVO56bd14CrVfIbiW73HYPgaAWanmMkTcPQRZKlBM+f5JLvW2WzBybvdOpwvJpyznL5nIAldxfm8fK55t2iBt8gtO3bYJsujXtHj7M8MULaxauyDbOu6jhUtX7gbh/x1pRx8gp8vjUodzvJfnxWtmyzieJFmNflEeVwe+CkiBzXdlAv2CkoTzSLZVZQNSowszaQNKRgnhCw+cxzFzsUQQo2ltr8K1+L207PpRovnHmc1Pt32EVfr4By5RwkZr4u4Nbgv8VhHxCwguNBgvmfcrN1fvEu1sjS3CXeCzMqsX9j05bg+yPDWklA+P/t6f1s0l3eg8+YVYS8SIhybzBqk5vBpPmAMP0+BcHNA20LxTkhX/XCG6Eq2bWLDTqoDkz2ceh46KnwdIr0saTXoMUgrCEn7XBX7e6gsfU5x8c/E+xGAH6eP5d5+R7iEMPmaWCS0QfNmQDIOQUoQm8oqgw9ch6sFUJjv5GnOqFnhrmQDjfwpMf1sQZdf08c71b22ff0fGQwLROZ4FrhSFkMH5rSH3pkNiQ27oLrHwuSepWLdaSdYzPxsIEu6SrO6+kWbeQQlT4dff7PDPbByAHQ1ZXVmMOt5YTd5CsHkBVQXwTnz2FvJMBybzCOFLQWXcGJi3Q+q9PqjegDxrZVWlKkVzKwmyiPpD9Ap6DIFl8MOg7upVgh8C2pYGNMPf70jin1fg5GoIwuNROXjgxKxA9zuXbT4HKrsZzvpAA7/2rNWJNaW/R4RX1iJaxdvGQtZ6IV/FfnO4PDqJ8tcdrVlxgGZRvVUmr9cu8/LJJzWRNU+KprFv8kBlzfZHrbDwEYyXveCqg/jokdEaLpo6PyLWKEBjrTmAubXgY+WvCZt2+LI5JRoOcDehSgs7aD8OcWO4HzteXquSexvfMoo5PUNhGOa/7AShqKeufrKErvQM="},{"id":"645a2e40-6ce6-4b5d-967b-5ccc8e45f41c","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"改进型应用镜像","description":"kami-gateway-improved-image","prompt":"全面介绍Dockerfile.improved的设计理念与实现细节,说明其如何基于已构建的kami-gateway-base镜像实现极速应用打包。解析该Dockerfile如何复用基础镜像中预下载的Go依赖和编译环境,仅需COPY应用源码并执行go build即可生成二进制文件,从而将构建时间压缩至10-30秒。阐述多阶段构建策略在减小最终镜像体积方面的优势,以及如何配置非root用户运行保障生产环境安全。提供Dockerfile.improved的典型结构示例,包括FROM kami-gateway-base:latest的引用、构建参数传递、环境变量设置及最终运行时配置。","parent_id":"bed2c9b4-de63-4b03-8187-d62744475754","order":2,"progress_status":"completed","dependent_files":"kami-gateway/Dockerfile.improved,kami-gateway/README.md","gmt_create":"2025-11-09T23:07:52.904207+08:00","gmt_modified":"2025-11-09T23:14:28.645855+08:00","raw_data":"WikiEncrypted:rEAPRMs+W78U3NolG1cAjrpDCCzu6hEemNrCSY9eebTEwPj/TEfOtdg1AP7qTRQXY0joVS/jf1l7pTBjIOU0oH/k8FzKEsN2tPJ68W3ubgf7rirsKODPkCZVrj/KjMpdJKFTBYW2VLbOOoJhp/cD3J25Wlu9E1MF5d7dCg5w+/bVHgE0dfreZqb/OTpB1ZUQwjs9xm/Bx74OM8K1gtGbukTjUsLS53l+WaDZIghJtIxC8xy4sDD1y92El5su+8n2otiJF2Lmb4wnCHeHxnhZ1aKd44qhuuCgalARhSH70XAzl696EfMbYlgh7I4Ki/Hk1dihrHuBmdK2oLrL41FEBPORb/MT7uwXqQTjgFQpZNJorBg3k5xu64c8QK5BkkB/iJRBuX6BCuP9cI54kQqXM5Z4TrOZEFo0lBpEx38VnMYZfmZkz6i1KxWyak3QjEbqwNtPaARlJea5H87nbEtomIph0ngq7Ox0mLt7o0s5+1nP/MIaf5fxZpFhx9chaIIGSVc1bLJ1sEd7J1NE2M9H5mzPct/B6kIFov0S6I++pZ6qF4cFx5dc0im90IUNRzcAQvteXo8/72HJuAr44cgV0bmGQ8kHc+/nZULKb+iQUsfUdwkh36Q+ZPEYMIUVIE3su5/TwV9urt5kWyZtIG/3byaWu9+hfPVUroa9C7jkohiJPRrxEJkvrUxqyV1cm1FjyF3Us549bAoQ/H8SvYQW556Cx7hAXZza9sE+KrO1lpLGaS3WkGcqF1sgp9afnxAzWJtsKZ2m4RkYVftywgukJq+aQvgvoa8lCnUz9uKRWSFQ/gk4UAcelsEX0hKRKi1LGoxKmoKZc1Yhjz054vwVPembFZWP6OTFUOrjq5J5wt82oWW52yG/bMRHcboSeENJrV6gAkrYdk99p1ufEF2TxK1lj+V1liRIR7ckk4TXHXY2KlocDgQ8eh71EhQBQs9WyQu/aQtxRj+4jcHx78hFgahtqZB7DmFs2lHeNEXPQRM78iEfxI8LgSE4ZMykT2AjQaRrKt/s6wv3ZCRNC9mDHmRHxOOu8wYNV07ShtoCstyxLXZ/tcFtXpNQOGcbAzQgVZKlo26V/Cg0wpWlU8orQvY0WBGvUogiXRp2ZPgoAYuKhcab16TsFwNawjDlmd7nIoMHEKPhrDB317ULpri9n2hgP9Y+A1i9TX6K/iVvric3ogBpLd/e8WKvI7arNFwIKVPPAmRc8deGMNIAP1h7J2vowIeIuh1DRpPPGogZm0bvorxr6ZTKn7Og+kCN3uK9LYEbOnhA0idN8sA8JNcTgJzyWKO2XwIgI/PWXjelWfIJEY1v36jjc//nkqj6PlMG6pRijsznqfvriefsORBqKIRSJWdRvhr2rb8f4dgMkYw=","layer_level":1},{"id":"269c6751-74e2-470b-aa81-73af9c865c7a","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"配置选项","description":"kami-spider-configuration","prompt":"深入解析kami-spider-monorepo模块的所有可配置参数及其作用机制。重点说明USE_PROXY环境变量如何控制是否启用代理加速,以及其对pip、uv等包管理器行为的影响。解释VERSION变量在镜像标签生成中的用途,支持语义化版本管理。描述DOCKER_REGISTRY变量如何决定镜像推送目标地址。分析Dockerfile.base中关于时区(Asia/Shanghai)、语言环境(zh_CN.UTF-8)和系统依赖(如libglib-2.0-0)的静态配置项。提供配置最佳实践建议,例如在CI/CD流水线中如何安全传递Registry地址。","parent_id":"3e5a6a0d-ff7f-445f-9d0a-2fe8bf1feb37","order":2,"progress_status":"completed","dependent_files":"kami-spider-monorepo/build-base-image.sh,kami-spider-monorepo/Dockerfile.base","gmt_create":"2025-11-09T23:07:53.825754+08:00","gmt_modified":"2025-11-09T23:14:22.11288+08:00","raw_data":"WikiEncrypted:ASPW4qx/mEg7V7YbLjHCJaGXmfF7itgIHHEUTlMcz6d93ucAXvwC+kWCbz2cGGgzxR87qJ8vfzOeDf352LhHrSU3WC6s5U7PghXyVIcaeKQk9qDgYJxKV2hsAmIwGNQUHc+TfyZ9TditQ5e0C2cgEVdiX/FPs2vB1z7M4dKUHnQGd/+x5QZJt3BRzZ3XlDRpI5KUrcxDqbPbw8IEHECf+wX4srXyx8ekzTOf8LBpSUVnp8BBjvKup4VDQh2gJgcbM+AXi3SxT2NyWhziF5gZ0WLU7NDuG0x/ZF8JG0xbLLHxHs4MnnKMZ6Xb//wDnYEk82UwOiezQYXfK/mcAV7if7lgAC0yeIKkG/kTHm5b0o0SFzYZ95a2aLt2mVMXdrfHsFyQ8xjSFtdVeUeL4LocPAmn+a0SKU9kJOkF5usBnWBAKXv9VaRnXjXvPDfpNqcpKlzhA4LqD0RJPjvNGrCQkCZPryOyFmpAxs7YRW0yTCp4BmUfTIPWAGCkJOh4/BPJdlGhOUa0dutSQqjch/Lpz2bl74503Y4+FKMMA1cjq660Y4pRolXIpKShD0XqhQMJwQkX7dnLiHbdzTIro7sKjTmdvNOVuuScopxaf4POO/foC2bSEQEJGYkjwmklMl9VAG8+wmy9PzKsO9KWBMMdrVOOwZqLpjEeB3LvBHHl7qquGGlAWq4vZPhnH2KD68C1fuSCohduoEPXEZRTX7XCPuLLoue3h1vy4dDxfsZAKCZnjnhnoM6+s6kYaQf41qQT1Ki/ApqGWM2Zn7b/4PXsNk0Za0YBcyEG3t20ogCjAR7VTQzCXB+MwkOnrv3Ob2+Dovj1xk/ZrAL8jFmkKfBSpGJ6/M67edtZ+6EREjf7y0YHLLcQln7QYtJU77ZVXjSvlVIGp8byRRPhQDTz5eRX1vnuAQircHBVmg2tXmF/ktA8V3KYzeixvfxv4OyyPKpos9kYPwYjIQSRgflDfiqMangfnIfUDVEJEsyQ7cGxZlnIPwCIpg+R82OFMoCxgxLfVeVZ1b3HLfZ1MNMIdbhfG6+b3KEkFItdngcnPrjlEeqTMOv/kNCvP01ketJVe6io4tc9SSmYzRn+1CuUedJiR3Pwl1T10+17GeDl2cA21TkGNfHqneYnx6ByIKMRYSewYY4USS4SEPH9E5gvWAB0FFMB9LuK+YAWfym38a7je7DC+wLqb1/RKpvYOKZpxpZHpO4n3Sp47r9B7ACpeK1tdxd4YSzNvOxXEHRPjqXw3xyQZdm0YfnrHauNPUkHD+USqFmCOunpcf2EfKLZnjEz/Q==","layer_level":1},{"id":"339675e9-e221-4ca5-9a18-b2390a6d1aee","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"kami-spider-monorepo 模块","description":"kami-spider-monorepo-module","prompt":"开发关于kami-spider-monorepo模块的详细内容,重点阐述其作为Python爬虫平台基础镜像的技术实现。详细说明Dockerfile.base如何集成Python 3.13运行时、UV包管理器以及Playwright浏览器自动化框架,特别是Chromium浏览器的预安装配置。解释pyproject.toml和uv.lock文件在依赖锁定和可重现构建中的关键作用。分析build-base-image.sh脚本如何通过USE_PROXY环境变量实现代理切换,以适应不同网络环境。展示该镜像如何预装复杂依赖(FastAPI、SQLAlchemy等)和系统级运行时库,从而极大简化爬虫应用的构建流程。提供完整的构建命令示例,包括无代理构建、代理构建和推送至私有仓库的流程。强调非root用户运行的安全实践。为高级用户提供性能调优建议,如依赖缓存策略、Playwright资源优化和大规模爬虫部署的最佳实践。使用kami-spider-base:latest标签作为核心参考,说明其在自动化数据采集场景中的核心价值。","parent_id":"03f420dc-94ba-4438-939d-b3cbb95856eb","order":2,"progress_status":"completed","dependent_files":"kami-spider-monorepo/README.md,kami-spider-monorepo/Dockerfile.base,kami-spider-monorepo/build-base-image.sh,kami-spider-monorepo/pyproject.toml,kami-spider-monorepo/uv.lock","gmt_create":"2025-11-09T23:07:56.011214+08:00","gmt_modified":"2025-11-09T23:17:32.615268+08:00","raw_data":"WikiEncrypted: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","layer_level":1},{"id":"a26f150c-03d3-4768-9d40-9cf3981ff53a","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"CI/CD集成与自动化","description":"kami-gateway-ci-cd-integration","prompt":"全面介绍kami-gateway模块与Drone CI等持续集成系统的集成方案。解析build-base-image.sh脚本中的环境变量控制逻辑(如USE_PROXY、VERSION),说明如何实现条件化构建与镜像推送。阐述变更检测机制如何避免不必要的镜像重建,提升资源利用率。展示在CI流水线中如何安全地注入DOCKER_REGISTRY凭证并执行构建任务。提供完整的.drone.yml配置示例,涵盖构建、测试、推送等阶段。讨论镜像标签策略(latest、版本号、git commit hash)的最佳实践。针对高级用户,说明如何扩展脚本以支持多平台构建(arm64/amd64)和自动化安全扫描。","parent_id":"3cd6b111-cd55-4414-9a4b-23c4ecdd4953","order":2,"progress_status":"completed","dependent_files":".drone.yml,kami-gateway/build-base-image.sh","gmt_create":"2025-11-09T23:08:21.229094+08:00","gmt_modified":"2025-12-17T15:28:43.913078+08:00","raw_data":"WikiEncrypted:4ZirWTX7VdwEgRQUzgbphhCZKNSJTL9efPf64RTWIwt0EsAYTv2N7MIyHlh58h1P2cW7M7C2Qc9PWLNNwANuy2h/yDN4f/NQILiig+AQifo8AjTvONjgFSHhNZRLg1KOR2TgQwxgbJvO4JfCyaYZL/Pu22Fpr+UzX09TMYjuE9+wmdamleIY8Lqh/m/T0z2Kddu8YrBQzbeHOpRxep6FArHvlUFt2usYStevd9QNOLSnLgjyCH4wmEyiDfZZJ213HGNKJYDv2yDMHD594TyyMfveFic2sM6HbPngFSQKdHFpV4uIt8wcazMDkEcJg8Mteo2ZF03fdHdduVEr6EYMNZrlGM5K4N6rSzX8CnnviiYpGQWNglz6yqu5Y3/Uo0fwEXpR6vzc8SXSLfapZ/SntY4VKNPjJu8KAzGzMGPZUkhb+S45skRUaPhS0+w1jDZ18kvb9XW5Vk5t8dGNToETokOx3plXULw2EEXW4+h4gi3Qi2BFpsLQxjhpVkT7u73miUDU4LJO8aCSbsbd/f+Uxok90BkQgJC8yZduvXAy7CXDU8aPlae6drqXW77HXGoMjpiYXBrueyM8SQgWxebDKPaqIi6bWR1FJdKn19CpAPhkMpErZzQYTpAoKwaUrVO0jNeHPNvcskVnrp+N2fdpR6wdIcP2+LelinpOjvRSBy1c6G1N+QLdWJHUZ39Q8+AP6wBGYw//HoeNrkF64uRzrcSjXW+4Wa/bieDCmCEMWjtMP2QDp/c8vMHbDcYmBfwRpDQY5P+cZoL7GYZa/mLzlRhbNSP1oWbUcESF/E0KaFdTTWlkUvjFSWJm/d/A6sniEMAuwWmM0nX3r/xqZ9morSLgnqxof37InwvhXJYlMtazjixmffk9b0Cz9+AVbqz7YoZg+jiGn7ke0h4F1HFBG4JoPBRH2E7NbWwV9ZTBfeghEUTnwTJzad16sDjOw3ae9A9WhDSTPw5I5IhW4wjDu5UFgIy5bOtnAXvVDSVhiQ3iygDojItf0l3wtG8P7OD4cd+Cc+NSxK+MceSdVQTIF39Gw4i6yiQxjSMf8kwHr2hQEgIvurGA9VugFMCltghNhEEvKIjuELlPlwYNxo7gEL5bNc206+1Kz/1AzxQMfYfCYc8CTMX+UC/yQeIbIuaeAjKQSs7Gp2kbgRVtq8v814ez4lbjWvLygFKMt8KxwcyluXiAPvXcfwg9Vs0hackYo2i5/buUnzCKiMucgTA9gdqGdy2cmj27hu+X5tH5cZjhYLYds4HLMOwdl2Sz6GeAXo+aRfVnl0jMQlRPb16goJOpO7fcFH2nVL4ke9pXT+NXOiFz3prCgT3ZmdrBLkxcNVxwigIqjzEMhKqIHrNl6VhEGkK40URkbLTMj30TpYGvX/7lBCqd+u2wxxvBlZWm","layer_level":2},{"id":"bed2c9b4-de63-4b03-8187-d62744475754","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"kami-gateway 模块","description":"kami-gateway-module","prompt":"为kami-gateway模块创建详尽的技术文档,重点阐述其作为Go语言网关服务基础镜像的设计与实现。详细解析Dockerfile.base中如何基于Alpine构建Go 1.25编译环境,配置goproxy.cn代理以加速模块下载,并预下载go.mod中声明的依赖(如beego、sonic、opentelemetry)。说明build-base-image.sh脚本如何实现基础镜像的构建与标记(kami-gateway-base:latest),以及如何通过环境变量控制构建行为。介绍Dockerfile.improved的用途——如何基于预构建基础镜像快速编译和打包应用,实现10-30秒的极速构建。强调非root用户运行和多阶段构建带来的安全性与镜像体积优化。提供go.mod依赖管理的最佳实践,并结合Drone CI的自动化构建流程说明CI/CD集成方式。通过实际代码示例展示从构建基础镜像到生成最终应用镜像的完整流程,帮助开发者理解其在微服务架构中的高效应用。","order":3,"progress_status":"completed","dependent_files":"kami-gateway/Dockerfile.base,kami-gateway/build-base-image.sh,kami-gateway/go.mod,kami-gateway/README.md","gmt_create":"2025-11-09T23:07:27.829032+08:00","gmt_modified":"2025-11-09T23:10:33.893344+08:00","raw_data":"WikiEncrypted:rEAPRMs+W78U3NolG1cAjsS3+J3juI6CT146KDRQuHCEzadbEbF+X9BWt2fiLZ4lKABFILeTWU3jK6x1YwItLgstJDP0TC1lMvIDX3dO+JEm0B4FbTu1TCZe98yl2kvxOEVE8pPh36mGXc0kagPdjYimvqDQtjX4u8bFv4T9yOxYAYw11uGjIHSNcuobk+TPwkzEIoRuz9arU0gpdQN49YEuxL4IKTzdmeROdV0ZsgthBhPuL1l6hqJWx+2arVhnT8CSqse9axZfVpeD0ktZLcJqZCRlKOYk+CdfAG1mhmJsy5wotjtgYDD7typKSxsTZorNHkOILo334Zc9bcsaUiDE8MJa7+Cq1jCQZqxMExWVErBKDK2HqSlsrAqTcLvuV+tWksOwCPkexN6OHV74ET6AWrjhbWfSNxRJPhIlme0DNMUTI0+zqHmbK7t+QIKQDJdF5YJbGa6CSp1v8wcZt8vIO4Y2ploo7xmxpG7Xlueyy6zywC4SQhpzhBnSQzT+TFacfNF/UviUCYFtj8DW7tQlDkWapz7rhUb+q4eMQq7RmDkQ4H/jCvJIDaQWxfGtFwAcY81XTh/lOb8+7VQLflnyAkXEsVBW3lplouxcnUw9NFie1rYP0fZTh9Ye03Vz/2S7syFZCv4mnhev27DrHllI+QfrjV2bihJfe7hr0lOx7VeT6bDryeElMkQlcIQ93ZJNYpzCHCmTEr30mY9CFRFaFw6omOjK9B841jSorOexdZusrV9mSHFeFK85KykaVQwYT8Ue6WkQOoOXiMnjuujyOIjyVFfcUB5loY0Hf/I14xcXvD+IrcRtdc47+pfS9JHRw22IuPsVU7kiKzMOjqxZ3LrSTre5MOV6e/WRD5+Ggp7Jh8TuWU6aqeKaFhxpPv89Y1tIYPOfuoMPH+FF+LIB9PzqiAfI58oHhxvxrafV+mPa0kDCErfUuiNkYiLjERfzsoImlzGxFNBEDQnOaMyiWct4zYLEy770EBWT5i1eBHR2thcC72da+3sVG+w426HTt+PClm39kEkSyfBy6mvmLyS24j2eQEuWcglIM/DSw+z5r84DAE+h00/xy7/mrGtNbmdajWnqSLnBnI2oMgAPcrNzgKCkclGtoWZuAZ3HZXOZGoZl6GIM5OjviTtETrjOkYH0QYORdz270LhnxuUYiamS/ehoN8IEiZ4hf115t1FcQEz0QMtre1R2d1+CLXtNr+XiY7L3cEn0kXdeVpzCl2f5TQ6sxnlQYDrEJaOhK+H70d1GlmtTX9U02U8KX3tNARix2pX63AQZunUiGZCf4myrPGt4I3iBGVpdMt48nSML85hTbdMh1jVO7KDyepEbj9MwwmWuHGCWpjtjpAu/Xiy4PkjAtRZf+99pzYn7YRUwKQMOoMI4uYacXNK6PuXViK4a/QY6NJAa65+uQK+Jp+2+qzckdKRKk5iWQtf8HCUC048br07gH2WLQNE+4xKNqgBrefi/7d2NmkQwqDJ0MQxz2L1kTIIG2l+n+OeCmjZTRjFeuXT6Ar6cq7HZT3GRTna9wpP+t3Ha+2Uj/YIGdvJpwBYslZ8UNd+RwVFS0ZLwNa+TLkcpL9hGBl1EEahIR5ujX1aQprdpvsalvf46G7jmf3LvqlNXD67tBK0EZuylCniy7awEzEYz6CqgbTeDVDJHIxx0j56iELhcUCXaO95y9dU2BlRa72+dRJEvZq7jOKFIT6T5XmOwzKLGk1vhAOsvJ9BuUeYRbGkAzr3TF37yU7ZpXW3I6GZ0Gs2+/u7I6fJNTGHI2DF2uMoQktF2CyUkuhu2NmD7qeWxD485+xGqeQBzxev1KqZHqmILxwoFBH7ht91CiUkQxQcwnUraLEwjPBECLWatinh3Dc7m+8W3SITQbUwezGGTKAI="},{"id":"c99b73ed-5093-4cbf-a45d-b1eee990f2d2","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"CI/CD集成","description":"kami-gateway-cicd-integration","prompt":"系统性地文档化kami-gateway模块在Drone CI环境下的自动化构建与发布流程。说明CI配置如何监听kami-gateway目录变更,触发build-base-image.sh脚本执行。详细描述环境变量DOCKER_REGISTRY和VERSION在CI流水线中的注入方式及其对镜像标签生成与推送目标的影响。解释脚本中条件推送逻辑(if [ \"$REGISTRY\" != \"localhost:5000\" ])如何避免本地测试时的无效推送。结合README.md中的CI/CD说明,提供完整的流水线配置示例,涵盖构建、标记、推送、通知等阶段,并强调自动化带来的效率提升与一致性保障。","parent_id":"bed2c9b4-de63-4b03-8187-d62744475754","order":3,"progress_status":"completed","dependent_files":"kami-gateway/build-base-image.sh,kami-gateway/README.md","gmt_create":"2025-11-09T23:07:52.905268+08:00","gmt_modified":"2025-11-09T23:15:18.136633+08:00","raw_data":"WikiEncrypted:rEAPRMs+W78U3NolG1cAjiVMh0W37ivm45D45BQDVab7UZtV6uy/z1pHARP0KrVWz+6XRjjtKSauLXyzNKdYSdx2neeeAnnYoc9OWSc0HByEMsT/dAkSxFwPQE5LCUiMyBVLGnLedW2avTMELteY5VqOspAzh8YppWquc0S3mmgqoNRBhbmC2QYIVFtH+eihvi1IU2iUoNlj8/jrytbRIEwYhsk1Py3CtCNQyAzu5r4bV9Y0UCm92qi6Cu5r+FlDs+jqPH0RYApN8JQIAErn2B2dBYhoADlSeVQBKngyByD1mBIpQxtR5qw2paoLEyDLf+yH3hIsIVICgu98H79eMdIJoewVELrnhxe5PInlsjD6D5TmA/VJN5NUsDfvXipAyqgdf/VTOBBg08mZ9VfqTOZ0wGUB+hihC2DDq/iAHKOPn/s5fKuG9DcCSyRx+wtiR4T1scQlFQ4/h8sjJMKK+tc7VDNbsotzy+JrYXV8KGuwPKAJE/CO3vrqNW3WTK9CyJ6EouKuTG35tzircXOIsUloFc4LvkGKcD9N30Ip7gZ5UWat5CJ17m14sdcZAftL6ZPjkWaKRr4RovrtXutcP4reOTZ57NpwoGEgWexLQljWGfy1QY6DAoMfhmICwIRPIf68EP4NBUYpsN9246ntFyTZvd7I9AZEqovLqFTHbwOIyhEQREC9FLQ7R4DEGLhIftlJajA0ArN6tNeiAlZYXhurBlw1XfqMWOB3zUvDBfcfNYF1RtKyS0XrX9i7yj7zyKjPvFSimUzipMpL/0u7W2azgG+T36njjLKlXTmbQFkfIaSY+1ZDFjLuGLft8npl17CEmHEG46q5gl1WTWyDoKdJgbz4xeNfmgdnig/1dU9WbNOeeMCKyxvKA1Hb+k/KphoU0bV1VuY6J70giIOWl+PSfxwcxD/6X3DFTSb3wFyd5K971nh/j0vMXwOjAUKk713Uj2SkXvvp4ocPcA7a/fSupHL8Yt2waskzhpo8E6j5jf5JEv/kcK17o9SeH5IZtAhLMIevWez81eI0tNI06ebbLjWm8FKjdC5sK6sXcOG6hcEMw4TgF3FNuE+ZB6Xu5PKvmfxf1XeCQe3TLC3DQpSFHOk4a0lBva41UbXViWwFvuiI5MapK1QGaIZVml3MhIOdIRJOSwVTXMCgTYr6CO/WnvBAlrdl2Cfa66qhzwnu8e+keCojLJx54eitRFWt9jmAuctPQf/jG0lcCiSH2U+G0nlgLXgpGgRzw0oJWmIZ2hucxEixlPpT3SbhpF7IWJ0Zw7+2MYVcaoQ/TAm/N+vgjDrWd43Qhc6USG34/u3B1PTUFaNokOwy667K1IHsgFX5ffDNnZyklnNUi51gIb0PGyzLShTd5om4nsKvZYg=","layer_level":1},{"id":"b88f3e9c-a57b-40bc-a946-71407634e380","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"依赖管理","description":"kami-spider-dependency-management","prompt":"创建关于依赖管理的深度技术文档,详细说明pyproject.toml和uv.lock文件在确定性依赖安装中的协同工作机制。解释为何选择uv作为包管理器替代pip,并展示其在安装FastAPI、SQLAlchemy、Playwright等复杂依赖时的速度优势。描述Docker构建过程中如何利用uv.lock锁定版本,确保环境一致性。分析Dockerfile.base中依赖安装阶段的优化策略,如分层缓存、依赖合并安装等。提供更新Python依赖的标准流程:修改pyproject.toml后重新生成uv.lock,并验证新镜像功能完整性。","parent_id":"3e5a6a0d-ff7f-445f-9d0a-2fe8bf1feb37","order":3,"progress_status":"completed","dependent_files":"kami-spider-monorepo/pyproject.toml,kami-spider-monorepo/uv.lock,kami-spider-monorepo/Dockerfile.base","gmt_create":"2025-11-09T23:07:53.826603+08:00","gmt_modified":"2025-11-09T23:17:09.554336+08:00","raw_data":"WikiEncrypted:ASPW4qx/mEg7V7YbLjHCJW4yexvTwPheebh81+Xv3pjBkKEHQ+NoXTZo2Sw/KPBHvoP1AXYwN5gxdEKGyBjg9tGHTj1cCgruT9WMH1lx5NLS6cVImWICmE5pVI7mEV1argdKheSeWne6Wg145SO3uSEQgFpbD1MTDCYDG9Kq4Q/S0RFdwnfysdxN+8uhozCVFHSkbMcp4agZaHl5cyH7H/cLBsIAC6fAjSaYWQ+1le/Hgu55+IadG9Mc2XesSQaPo/nQ5uElY7tHId6dYz9qoJ8j0+4ek8S2IvnuJzXjVXLOo9Zh+/Q4IQ7g6y6Xb5mRjhJCZZdxH7w6ReLiO9RPsQ4H2YdfM+1k4BuFrPR6aKwNOa8Ddh5bHnoVTunt2mqNBG5eH8Yr6w5BbkKQypxXmpsya7AOliFPZhahQgatazc25wDOw41bMVJJNKI2A/mEwKTlP/9hprjEkx6qBFQ85iBOvsNY0LdLnBrjQkd7GosUuVH8V9DjrKtjo9lNpPQ5ncVM32Gi3iAOLj3dMZp+buW/4tiCMsFTrNC9vW40rQgQHK1B0hAug65M7NhEZIJi0e0RzYuZ2HSlV5l8p0aD96hYmETNs8v7cPsLiBNpSVhqV+fisH7Wp55Pk5kebXwiLy3MhcH+o6Pb7rPavyVubncRcveMkqWUSoKaAzuhNMbY1bFYN8pCYr1c3H0v29MUKXZ/EPhKqbQLH79CgGsRA0cQLRzMgiXn+P6Esw++ZUD2RKMVycdb/n2xkxL2H1N0dZcMzR4hdDztgXyKFbGjZbpQ3YgjhT/P/j5bYBuUXCIPyZYw/pXi0x/GqP3Ftc8xUJg/pnuG8CNWhYXothcrLc6rmG1xmJNTyAPPPtw7kspeHc1r0q4Dj6niz47eZaNmEo9x9M8gMSg7gKC4s+z3hNb1W1RR6weM066E3ldfSz7TV5bEUTY41h54YJqwx3bROLPZL476q67DPDu1rKXPI844w42Nwn3fsmhDhlswtGZ8uTAaTzpBWESsqhjbsnY7/gOJ8FSatxVPHfNmR93XJRGGhENeTBbjq84OK3FtvsqRJfmvzgtdNkM0724pSjW4/FfbkXILKRU3mf07OgaJXKBrrloPA3Qoh7IBhOX9uWGniuQfHVp+8crVvc2ATySe26j5j6oBoRaJBh+RWgpATwhU9ComEnwsp6S19xGtOX2BI4S5xgFrU3izXSf/zYPbLISgVqDiprvRX76IFxqJc+RJhbX2VPEjQELanAGL0OK+UsP3OkQnsCNUJaw7iDl18NshiFro+lomF1UF8mdrd+gKSj1whHL0Qy7L13hmx27c9qzNCFvGz+BULKKf9jaTjBJy8+KttxzF0RA0Y6K4PQ==","layer_level":1},{"id":"807c5414-dbc5-4fb4-98d1-34245f938219","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"应用镜像构建指南","description":"kami-gateway-application-image","prompt":"提供从kami-gateway基础镜像到实际API网关服务镜像的完整构建指南。演示如何在应用项目的Dockerfile中使用FROM git.oceanpay.cc/danial/kami-gateway-base:latest进行继承。说明如何在应用构建阶段复用预置的Go环境与依赖缓存,实现极速构建。展示多阶段Docker构建的最佳实践:第一阶段使用kami-gateway-base编译二进制文件,第二阶段基于精简镜像(如distroless)打包运行时。指导如何配置健康检查、启动命令、环境变量注入等运行时参数。提供完整的Dockerfile示例,并解释每一层的优化目的。强调镜像安全扫描、漏洞检测和非root运行的端到端实践。","parent_id":"3cd6b111-cd55-4414-9a4b-23c4ecdd4953","order":3,"progress_status":"completed","dependent_files":"kami-gateway/Dockerfile.base,kami-gateway/build-base-image.sh","gmt_create":"2025-11-09T23:08:21.229659+08:00","gmt_modified":"2025-11-09T23:18:39.246634+08:00","raw_data":"WikiEncrypted:rEAPRMs+W78U3NolG1cAjpUG9zVReLON6+B7Chmkmnjc1S238+QeZKMCaGz6Gs3OFHTS2rX3okiKjUgYBu0BiC2m9QXfw37xW1YPB3d4/hJePp9dY4DLtoOmngCTqhLMjYWqebnp2kkdLkItEBN+vJSAJRZ27kB35bgIuDN4QuGnaxDStlw6C3bNPTG2bL4ztwY6hu0dxW71gU8VshKYE6lsxm0Jq84RGJZJxVvsuYScCsQW/R6iCoWcBG2qvl5LlmQxXCNIJkqJVgkiDQQF/NqkClvkmuHiUMtK2K90t9AKfIbNjHJG3QGCwzOOPGw6qk4trS1jwJrybd9+nMnB4Z7CK7E7sGWYuZg5JY0ASGeql60yyH1s/mZ4lQCKz94DKqW87ew9FkrhotX/PHFpIQAIqqRYIeOrtbNZiL9oRp8gaE6Dj3h91XLlUZLvah4473gTWk76L1f6M41TlQql1ExUgvr5eseRe4Fz7o4Rbw8rchNjAndwfwG+aSd8DfALFt7nP9C7gmvymhuWde2IqPhjXSQFtnu0bKM9BZDi/MO2yWJODIITyL/voojPSpZsWBbuIzMyRUpkF96VdbMWx258IGvOyP5qolgE1g/jHV7J3pEJa6Lr9JUGNWf0d1xVRifBMH/ArVThaIJW7u4twsRXhjFdh8qf+a63d+/TmpoRbtU2GJWUPnXHJa7xbpxTTCt9TQh3ihAe/OwsdDh4m4v6cVOb0hrBh3MuC90uKGp5HBC7rzHMj9OTeLBnHmsGWso0LiQWYUpEFBRR2Aad5PXAGh/2QH/4MCEr9MpmijXNbXhIWd6UbmXwCV0OVNDvAgViC2ajmSYYTaJPoOsmiG3kq4HGgF7l2xGMQYTX+eteqZfqfmqBNXH8kCJw/nD2mVjLGTB07r2T1pJyx2q76xfdHZfSBY0dk8B/cdwPhootmzOWajrlpLQxewEVuzkvD99gsjUPMmcYnHvuNdLhFM4NNpfGlJI2OcpB+nwlgPRfn2VL8FrrycOL+vkzw1EVaZwrUfVoPFbtHdDAbezvicACUpSqPvroth7/3Vu0lcHcFi+Pn0GKqTx8AnUb0OjV3epRF2LEGeaqQyPp+C49eDCA5aJD2MAw9YHUVlcgD1Q+QDlYFdkJlwOA5h43hKdqWYAAvBJaPQ2C6pfX+WldsO59eQZFZtF5WOeM/boHCcZjyO+YADV4cft45jbTJRp4EB8uSQT+fYoPmfdUtBUgmxcqjSz7ImUTz0vhK1NUqWwrxZaNF0ThxE8IOB5J4jvph0UTTjlmHmZNYvzzKPZyL9Vfy7Vn8ju5RIcCiCg3WWxGFm/7mla2NlsJYxUwEMJgrDAUnG6j9uAN/kYpN9fKeB9jtk2qmej6T/WKU5zxSLrKvtK22q/n6crEHTdvZvZIMuOo02XkHdAYx3A0e2XShVcjUUF5uxKOOHUBJ76VOp0caV61JcJhestyxjHqQ9FN","layer_level":2},{"id":"3e5a6a0d-ff7f-445f-9d0a-2fe8bf1feb37","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"kami-spider-monorepo 模块","description":"kami-spider-module","prompt":"为kami-spider-monorepo模块开发深度技术文档,全面覆盖其作为Python爬虫平台基础镜像的关键特性。详细说明Dockerfile.base中如何安装Python 3.13运行时、UV包管理器,并配置清华源以加速依赖下载。解释如何通过pyproject.toml和uv.lock实现确定性依赖安装,并预装FastAPI、SQLAlchemy等复杂Python包。重点描述Playwright的集成过程:包括系统级依赖(如libglib、libx11)的安装和Chromium浏览器的预下载,确保开箱即用的浏览器自动化能力。分析build-base-image.sh脚本如何通过USE_PROXY环境变量切换代理设置,适应不同网络环境。强调非root用户运行的安全配置。提供构建命令的实际示例,并说明生成的kami-spider-base:latest镜像如何显著提升爬虫应用的构建效率。结合代码库内容,展示该镜像在处理反爬虫、页面渲染等场景中的优势,为开发者提供最佳实践指导。","order":4,"progress_status":"completed","dependent_files":"kami-spider-monorepo/Dockerfile.base,kami-spider-monorepo/build-base-image.sh,kami-spider-monorepo/pyproject.toml,kami-spider-monorepo/uv.lock,kami-spider-monorepo/README.md","gmt_create":"2025-11-09T23:07:27.829743+08:00","gmt_modified":"2025-11-09T23:11:10.925228+08:00","raw_data":"WikiEncrypted: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"},{"id":"779d5d86-9d89-456c-9f5b-7dc9e122f01e","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"Playwright集成","description":"kami-spider-playwright-integration","prompt":"专门针对Playwright集成编写详细文档,说明如何在Docker镜像中实现开箱即用的浏览器自动化能力。详细列出Dockerfile.base中安装的所有系统级依赖(如libx11-6、libnss3、libasound2等),并解释其对Chromium运行的必要性。描述Chromium浏览器的预下载机制及其在容器内的存储路径。提供Playwright Python API的使用示例代码,展示如何启动浏览器、拦截请求、处理反爬检测。说明如何通过环境变量控制是否安装Playwright及其浏览器,以适应不同使用场景。包含常见问题如‘Browser closed unexpectedly’的解决方案。","parent_id":"3e5a6a0d-ff7f-445f-9d0a-2fe8bf1feb37","order":4,"progress_status":"completed","dependent_files":"kami-spider-monorepo/Dockerfile.base,kami-spider-monorepo/build-base-image.sh","gmt_create":"2025-11-09T23:07:53.827144+08:00","gmt_modified":"2025-11-09T23:16:41.812703+08:00","raw_data":"WikiEncrypted:ASPW4qx/mEg7V7YbLjHCJZBC8mhbljgoMjWDHHCmowAtniSjJlLzXJQJMlgLq5mnQ0tQlPzohOOY3FBVcG+r/1ghv0BAtzXsdyX9oXECjM+nJhx5YCFIKleALevcRrLPIYclNDxoOgwzzf65AJHncuYi5pCYXDrQhIims32ZUlO2tkb5W4zoU/CKSxNdROSakcaLLoI6n6uOKk6WrIXD3EIyy9sPxbv6269WlRIQu76Y1rxHdGV1cZtD/q66PPMxaTbue9zgWfskevP8oQ7uZiA1kTvH+AwZT0lzPylgm0HLfStEojyL5TLx0bjb9FiMia4MjPLmWeAPmq4VdmfHdyUXU/sD/O6GDQJRkpO/MHHDeWHUeZpnxZ1Do/Di2OPPxFEqeM24sM95bdqMqh9e+mBxj4kJka8uJ2A4s3ngYPK+MqwMB2Tzz70E2YffhR1np7KuZRqESgb5GQ04kcaPkOnQFKSnuR84+gkTgOKVA/+ZaLcUGgAnpxhR7psHL3qB85FcDuFT9D2KJ5pKo3PCC8/tEu+AGmhCu1pJEY6PQXpyHeq+F5swEnBYoeTk573zMtN7HXVo916pGfPM77LG1hT/P6u9yUwfzez02Mzn64OwJ1pbw3X8mkbpZKBX7GIaemS3HqAnPJAerDEabVFGlostRGI/jqvBX3gW/erVtLf5m3xmmgtbbQES/47EEtThh57tJ/BEjBWvWju1Tuf9Hm3XO10jELZYN89G4S1k6xS5pPAicLzXeBX2cWNQEj0BehRP70hPw6csyvOnR4Y5PJhKa6dKC6XqF1F7/CpAMgUfOeidaL333sm8eNJ31efRyXK14JpixSplB3saBi41Pv6Lo5NGXZDUW2wVXvVcCa7outJnsX14I/NZ8zhiLoY0Zap01OQxxEUab55dkxx53Ewvuyo4z4tc53HO+IrUneWDaOej13RzyqtKfUWtgFuSnFLxCQW8U/umanDqquRIxobM5HinZbR38YN0Z0GtHUOTifN7/U7tT9Fchgui2rtwULqGcHQs5BCXPMyasDhOqUMIyQYhAvzdMv1pkEo53tgNOIXG8kKV6oQpZyTtBlOeQvDQL+Uacd7fbRCUF8rU40GJwM3+/QqWaS5t6XZD677vKIpB7Yt4X+3BBYe3/NIJ5ChlalRbiX1lbJtlQ25jd/wAL7IUkM4XdPDUqgF84TSq1EAd/KUjAV6TKQQdnKtcpI6KCftoyAOpNh7W9yj9qTnmWA6xLP3YXwIYo6ez5T+uDBU7h58pzt5uNiHsj2MLCqilnaIvvWE4sI+U8z2kyVdnWLMsf6AOMRSEVaEUmDRfCLOZif4GVDicPMEZYBbWB9Jf1IalDT2qKtDePesuTra42mzPV9gciPMEjutodvFpR/ts5UX5b0kxxOlGzFg9FQS85RHmnhJoMejs0sqv294/o3TTKCbNzNzH7EmJsFw=","layer_level":1},{"id":"70da6621-4cb5-4c38-b07c-6f60aed77743","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"通用构建指南","description":"build-process-guide","prompt":"创建通用构建流程的权威指南,系统化地解析所有模块共用的构建机制。深入分析build-base-image.sh脚本的实现逻辑:如何统一处理DOCKER_REGISTRY、VERSION、USE_PROXY等环境变量,如何动态生成Docker镜像标签(latest、版本号、仓库前缀),以及如何执行docker build、docker tag和docker push命令。对比三个模块中构建脚本的异同,提炼出可复用的构建模式。详细说明每个环境变量的具体作用和使用场景,例如USE_PROXY=1如何启用中国代理加速,DOCKER_REGISTRY如何指定私有仓库地址。提供脚本调试技巧,如启用set -x跟踪执行过程。总结构建过程中的最佳实践,包括镜像版本管理、构建缓存利用和错误处理机制。通过跨模块的综合示例,帮助开发者掌握整个项目的构建体系,提升自动化和可维护性。","order":5,"progress_status":"completed","dependent_files":"alpine-base/build-base-image.sh,kami-gateway/build-base-image.sh,kami-spider-monorepo/build-base-image.sh","gmt_create":"2025-11-09T23:07:27.830616+08:00","gmt_modified":"2025-11-09T23:10:30.434814+08:00","raw_data":"WikiEncrypted:ZHd6gDb1oAMJeik+Vv5fPoz/jX+zxb0mgqH/BhlMleNwOwjMdns3v8QxJft36VZZ1Ra2n2FjapsC21gS/q0slRh13bwOPBWPql3C1r0kfzTmG5aiClK0KQ4Rrk38ygcFlPllzAYU/Y496RyCVgc9ZG2LFFVaNaLmZ5KE7j8JDMAnmFumc3KvD1bdFMKlPUKsK+yOhtgjd2Y50kmZ5qEMbBlPqKA4filJsyvjLVCWaUJpGsIep6W3UGr23j/oT8Ul0NhibQQA7w9gDSe5b7gkq05PFgw3PG1bkh26Ez9PppawPvJYFeK45LsFX0i/iM3sztoWXqwXISacDQvXWWX2vvkokqasHf15IUMBO2Thoa16VS/z0Rmmo1f8iKZsxXEVWZ02ySQ+0mMfp81cK/y5cCD4wHbWqHvMZI5vaGwvfvXs9WOnsy86e7xdtkGcKuagP44lnRRQ9Kme6V/h/A+Obpj/SZB1deaWE1MDFQb0j0lboo9OFaJhfknW4rSv7IdEQNESoqM/aRtGy/Jdhp30zJkOLw1yZMQOT2Q/IDEd3s/KYOwYT8ybRKzQPkuJOOCL1H4F9TJz5k5VLs0iK/gQSjkiPePoWLF8uuMpme4mr4EONmMMZoEuKxb6QC6F/DWBfPrZBA2cyTz6quDByNHqPntvHIIY/s4Sc2TzsLqeF5ZgnYI8JClqRL7uW8UFH6384d3JLPBpgHW0+YBdiVRl3lTpHQWIMOxAw7GOA4FBCAXu+YoAk6/mUhMiFJhdgu7lMZpZXNgGO4NAb5N3Yg/RN3V+My2mHr8GSgPSQUWBXGRNhAG5LA1vOOCe7iJfbZuPTxYP77RRvnhFdIvTbIp1ZVegrMoFN8I8m3rg52eL+MYejzpiBFQLPB/NodCa3fiPDyCC3uQiS73swQTNFQ6Gme+tVkzO+njdUi2WskRkEEIyFIu2uRtGfO9DatOdEjm+a5sI39A+x8JvGIWwa0F4hPUKL2cKyjRld+O33PSIQyNCr0NduPBCDchvxViKKfZAZTqm3xRzMJ9h3ZlkyGOPGAnIRSJtd/F8eOEfoADY3obrq8yRjePAWioA3uPwDu68nVscmcPRHDAZzLyULp2Bfe6w4OoMjFQI786+xvNZ7Rj2nk3oaG24GWRaYg0HPfFJy3dc3amx4ASICV94+h3CEdSRFnQF43qkkeGFctyBgVea6bx0a18EKvhNvKg/KRvB79r3LAF7mHJJD0yyoqPSbOD9CsEh4Lc4H2OCZZ9FSaI1YK99Hn70sxHDBkC7w0ynQEHIBIQaIhvoVMPV7ES7Acru7QUkeiym9UZFyIO6zd5SVIj6wYuxIWnMzyetdJG+8Cni+f0C62fzhq7BgVCKh+jpAMS9Aq7PGldAAhhdkKrQZJeE1bLZfHUH4abJgz0n0uxem5oVHUZVHO2GmHfkQ6RAt8tP8/GRYayzCLUbTdgrzKBf1149tc45QG5wZUDoC99QlVBuPraVrw0toDy7haJ7v+vj7Vh9694aFVVFSr3P9phlN9VnbJUfYkEG8WEDPZy4+09g7r0VvXXElIbO4NVxl6+OVk9+Fo99FATyJMCcBcSUzldtY/tOxQkR/MwGo8nhWh+pkYSVAK2xCeMtlPcJ0/VSanfFzxJ7ohBb5AAs4s+vtcTeN7p1qTk/kGUgaUQYRQygXR5Np4V2tWAfZaLkIFzUxFLohZuR5NjDWCYhaC/rH1LdaNZmEQmneH23IeFFTkmR1URgNmHxlYl4X0Zf1Mg5og99vUWaqE7lBHs="}],"wiki_items":[{"catalog_id":"7e3ebf37-1574-48e6-91fd-c38325ba1c0d","title":"alpine-base 模块","description":"alpine-base-module","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"68b7dc3f-a5a7-4730-81d1-38e8c2f88b98","gmt_create":"2025-11-09T23:09:00.383526+08:00","gmt_modified":"2025-11-09T23:09:00.385166+08:00"},{"catalog_id":"87858ac0-b4c3-45d6-b46e-5b9aa92027dc","title":"快速开始","description":"getting-started","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"5de39294-77a1-4f26-b9e5-8d22ab8a9499","gmt_create":"2025-11-09T23:09:18.772042+08:00","gmt_modified":"2025-11-09T23:09:18.775452+08:00"},{"catalog_id":"03f420dc-94ba-4438-939d-b3cbb95856eb","title":"项目概述","description":"project-overview","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"2ecaaf95-655f-4d6d-bb65-5b3a221d0e19","gmt_create":"2025-11-09T23:09:27.671667+08:00","gmt_modified":"2025-11-09T23:09:27.674249+08:00"},{"catalog_id":"70da6621-4cb5-4c38-b07c-6f60aed77743","title":"通用构建指南","description":"build-process-guide","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"3bf7ce2c-59b1-438f-ae79-28203309703a","gmt_create":"2025-11-09T23:10:30.429109+08:00","gmt_modified":"2025-11-09T23:10:30.435416+08:00"},{"catalog_id":"bed2c9b4-de63-4b03-8187-d62744475754","title":"kami-gateway 模块","description":"kami-gateway-module","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"12203115-71b4-4691-88bf-ab11564b9fe8","gmt_create":"2025-11-09T23:10:33.88887+08:00","gmt_modified":"2025-11-09T23:10:33.893734+08:00"},{"catalog_id":"3e5a6a0d-ff7f-445f-9d0a-2fe8bf1feb37","title":"kami-spider-monorepo 模块","description":"kami-spider-module","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"0b98aaa0-f8b6-4519-9e33-da448e5d46bc","gmt_create":"2025-11-09T23:11:10.921077+08:00","gmt_modified":"2025-11-09T23:11:10.925657+08:00"},{"catalog_id":"07c159d7-3fa1-4dca-a4ea-502f25f5b08c","title":"基础镜像构建","description":"kami-gateway-base-image","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"295c1192-6d0a-4dd0-9d9d-382ac911c205","gmt_create":"2025-11-09T23:11:27.961286+08:00","gmt_modified":"2025-11-09T23:11:27.965348+08:00"},{"catalog_id":"78097928-b28e-4f2f-9fef-370b9329d92a","title":"alpine-base 模块","description":"alpine-base-module","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"adc2875e-7302-4520-9bbd-8a5f67213877","gmt_create":"2025-11-09T23:11:54.502101+08:00","gmt_modified":"2025-11-09T23:11:54.505794+08:00"},{"catalog_id":"2fd9ad61-bf0f-4453-b139-5c069562d31d","title":"构建与使用","description":"kami-spider-build-usage","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"2a4ff51e-641d-4f66-99fd-c5cf3faf8d68","gmt_create":"2025-11-09T23:12:40.581208+08:00","gmt_modified":"2025-11-09T23:12:40.584636+08:00"},{"catalog_id":"c24099c1-6bfb-40ce-9315-6fbc1e8741d7","title":"Go依赖管理","description":"kami-gateway-go-dependency","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"30884903-1b75-4192-845c-61a90fc80d8b","gmt_create":"2025-11-09T23:13:09.420371+08:00","gmt_modified":"2025-12-17T15:30:20.243058+08:00"},{"catalog_id":"6160423e-0318-494a-afdf-c9f71305913d","title":"功能特性","description":"kami-spider-features","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"192594ea-bb47-4a29-b16c-b6782eafb53e","gmt_create":"2025-11-09T23:13:38.926036+08:00","gmt_modified":"2025-11-09T23:13:38.929724+08:00"},{"catalog_id":"3cd6b111-cd55-4414-9a4b-23c4ecdd4953","title":"kami-gateway 模块","description":"kami-gateway-module","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"603cb3a2-940c-4fb4-af92-1455c2e842f3","gmt_create":"2025-11-09T23:14:06.578094+08:00","gmt_modified":"2025-11-09T23:14:06.580304+08:00"},{"catalog_id":"269c6751-74e2-470b-aa81-73af9c865c7a","title":"配置选项","description":"kami-spider-configuration","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"8525a571-0ae0-4153-9ba5-23d2de726ef4","gmt_create":"2025-11-09T23:14:22.105667+08:00","gmt_modified":"2025-11-09T23:14:22.113918+08:00"},{"catalog_id":"645a2e40-6ce6-4b5d-967b-5ccc8e45f41c","title":"改进型应用镜像","description":"kami-gateway-improved-image","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"958d01c4-a4ce-441a-b1e6-464718390859","gmt_create":"2025-11-09T23:14:28.643639+08:00","gmt_modified":"2025-11-09T23:14:28.646075+08:00"},{"catalog_id":"c99b73ed-5093-4cbf-a45d-b1eee990f2d2","title":"CI/CD集成","description":"kami-gateway-cicd-integration","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"b75ef0b1-14eb-4602-a372-8bc28c154516","gmt_create":"2025-11-09T23:15:18.133845+08:00","gmt_modified":"2025-11-09T23:15:18.136915+08:00"},{"catalog_id":"779d5d86-9d89-456c-9f5b-7dc9e122f01e","title":"Playwright集成","description":"kami-spider-playwright-integration","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"b5946ba4-2b1f-431a-b8ea-87a1a62a6dff","gmt_create":"2025-11-09T23:16:41.808732+08:00","gmt_modified":"2025-11-09T23:16:41.813053+08:00"},{"catalog_id":"b88f3e9c-a57b-40bc-a946-71407634e380","title":"依赖管理","description":"kami-spider-dependency-management","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"4044ee70-4d92-48cd-9ea5-f437be453797","gmt_create":"2025-11-09T23:17:09.552861+08:00","gmt_modified":"2025-11-09T23:17:09.554471+08:00"},{"catalog_id":"f53cebe0-d1f4-4508-a612-12121007a602","title":"基础镜像构建","description":"kami-gateway-base-image","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"8cdcf2ee-6ed7-4ab6-96c8-82c39c3df207","gmt_create":"2025-11-09T23:17:28.957875+08:00","gmt_modified":"2025-12-17T15:28:50.338389+08:00"},{"catalog_id":"339675e9-e221-4ca5-9a18-b2390a6d1aee","title":"kami-spider-monorepo 模块","description":"kami-spider-monorepo-module","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"3883b336-0b91-405e-8c5d-fe6b5f98462e","gmt_create":"2025-11-09T23:17:32.61158+08:00","gmt_modified":"2025-11-09T23:17:32.615566+08:00"},{"catalog_id":"d989e9db-0336-45b5-bb9a-08c65211d8cb","title":"Go依赖管理","description":"kami-gateway-dependency-management","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"844ce3c6-c207-4f0f-9749-4a97ffb47912","gmt_create":"2025-11-09T23:17:52.27211+08:00","gmt_modified":"2025-11-09T23:17:52.275336+08:00"},{"catalog_id":"a26f150c-03d3-4768-9d40-9cf3981ff53a","title":"CI/CD集成与自动化","description":"kami-gateway-ci-cd-integration","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"407e4974-151b-443a-958e-bb4048b3a58b","gmt_create":"2025-11-09T23:18:03.547215+08:00","gmt_modified":"2025-12-17T15:28:43.913123+08:00"},{"catalog_id":"807c5414-dbc5-4fb4-98d1-34245f938219","title":"应用镜像构建指南","description":"kami-gateway-application-image","extend":"{}","progress_status":"completed","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","id":"e3d57446-2281-49ee-84bf-50106e329c6e","gmt_create":"2025-11-09T23:18:39.24271+08:00","gmt_modified":"2025-11-09T23:18:39.247106+08:00"}],"wiki_overview":{"content":"\u003cblog\u003e\n# 项目综合分析报告\n\n## 1. 项目介绍\n\n该项目是一个基于 Docker 的容器化基础镜像构建系统,主要为多个微服务或应用提供标准化的基础镜像。项目包含三个核心模块:通用 Alpine 基础镜像、Go 语言网关服务基础镜像和 Python 爬虫平台单体仓库基础镜像。其核心目标是通过统一的构建流程和优化配置,提升开发效率、部署一致性与运行时性能。\n\n项目主要服务于后端开发团队、DevOps 工程师以及微服务架构下的服务维护人员,适用于需要高可移植性、轻量化容器环境的生产场景。\n\n## 2. 技术架构\n\n### 组件分解\n\n- **alpine-base**:提供一个经过优化的通用 Alpine Linux 基础镜像,集成中国镜像源、时区设置、常用工具及自定义证书。\n- **kami-gateway**:基于 Go 语言的 API 网关基础镜像,预装 Go 构建环境与依赖管理,支持快速编译部署。\n- **kami-spider-monorepo**:面向 Python 的爬虫服务平台基础镜像,集成 FastAPI 框架、Playwright 浏览器自动化工具及完整的依赖链。\n\n### 设计模式\n\n采用“分层构建 + 共享基础”的设计思想,各子项目独立但共享构建脚本结构(`build-base-image.sh`),并通过 Docker 多阶段构建实现环境隔离与最小化镜像输出。使用非 root 用户运行容器以增强安全性,并通过环境变量控制构建行为(如代理、版本等)。\n\n### 系统关系与数据流\n\n```mermaid\nflowchart TD\n A[开发者] --\u003e B[执行 build-base-image.sh]\n B --\u003e C{选择构建目标}\n C --\u003e D[alpine-base]\n C --\u003e E[kami-gateway]\n C --\u003e F[kami-spider-monorepo]\n D --\u003e G[Docker Build]\n E --\u003e G\n F --\u003e G\n G --\u003e H[生成基础镜像]\n H --\u003e I[推送至私有/公共 Registry]\n I --\u003e J[CI/CD 或生产环境拉取使用]\n```\n\n## 3. 关键实现\n\n### 主要入口点\n- 构建脚本:`alpine-base/build-base-image.sh`\n- 镜像定义:`alpine-base/Dockerfile.base`\n- Go 模块配置:`kami-gateway/go.mod`\n- Python 项目配置:`kami-spider-monorepo/pyproject.toml`\n\n### 核心模块\n- **Dockerfile.base**:定义各基础镜像的具体构建步骤,包括系统依赖安装、用户创建、工作目录设置等。\n- **build-base-image.sh**:统一的构建入口脚本,负责镜像构建、打标与推送逻辑。\n\n### 配置方式\n通过环境变量(如 `DOCKER_REGISTRY`, `VERSION`, `USE_PROXY`)实现灵活配置,支持本地测试与生产部署之间的无缝切换。\n\n### 外部依赖\n- Go 模块依赖:由 `go.mod` 管理,涵盖 Beego、Sonic、OpenTelemetry 等高性能库。\n- Python 依赖:由 `pyproject.toml` 和 `uv.lock` 管理,使用现代工具链 UV 进行依赖同步。\n\n### 集成点\n- 私有镜像仓库(默认 `git.oceanpay.cc/danial`)\n- OpenTelemetry 监控体系\n- Playwright 浏览器自动化集成\n- 中国镜像加速(阿里云、清华源)\n\n### 组件关系图\n\n```mermaid\ngraph LR\n A[alpine-base] --\u003e B[kami-gateway]\n A --\u003e C[kami-spider-monorepo]\n B --\u003e D[Go 应用容器]\n C --\u003e E[Python 爬虫服务]\n D --\u003e F[(私有 Registry)]\n E --\u003e F\n F --\u003e G[Kubernetes / Docker Swarm]\n```\n\n## 4. 核心功能\n\n### 功能概述\n- 提供轻量、安全、可复用的基础 Docker 镜像\n- 支持多语言环境(Go、Python)的服务部署\n- 内置中国镜像加速与证书信任机制\n- 支持 OpenTelemetry 分布式追踪与监控\n- 集成 Playwright 实现无头浏览器爬虫能力\n\n### 实现亮点\n- 使用 `uv` 替代传统 `pip`,显著提升 Python 依赖安装速度\n- 所有镜像均以非 root 用户运行,符合最小权限原则\n- Playwright 浏览器在构建阶段预安装,避免运行时延迟\n- 构建脚本中集成镜像大小输出,便于性能监控\n\n### 功能状态图\n\n```mermaid\nstateDiagram-v2\n [*] --\u003e 构建开始\n 构建开始 --\u003e 镜像构建: 执行 build-base-image.sh\n 镜像构建 --\u003e 标签生成: 成功\n 标签生成 --\u003e 推送镜像: 非本地 Registry\n 推送镜像 --\u003e 构建完成: 成功\n 构建完成 --\u003e [*]\n 镜像构建 --\u003e 错误: 失败\n 错误 --\u003e [*]\n```\n\nSources:\n- [build-base-image.sh](alpine-base/build-base-image.sh)\n- [Dockerfile.base](alpine-base/Dockerfile.base)\n- [go.mod](kami-gateway/go.mod)\n- [pyproject.toml](kami-spider-monorepo/pyproject.toml)\n- [Dockerfile.base](kami-gateway/Dockerfile.base)\n- [Dockerfile.base](kami-spider-monorepo/Dockerfile.base)\n\u003c/blog\u003e","gmt_create":"2025-11-09T23:05:46.414743+08:00","gmt_modified":"2025-11-09T23:05:46.414743+08:00","id":"54adec79-d720-4f87-b583-c07fe23293f9","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2"},"wiki_readme":{"content":"No readme file","gmt_create":"2025-11-09T23:05:08.59952+08:00","gmt_modified":"2025-11-09T23:05:08.59952+08:00","id":"994ae718-fa12-4385-aafd-1fbd75fe8b4c","repo_id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2"},"wiki_repo":{"id":"7344f110-a8d0-446b-a0f4-7d8e507bccd2","name":"docker-registry","progress_status":"completed","wiki_present_status":"COMPLETED","optimized_catalog":"\".\\n├── alpine-base/\\n│ ├── README.md\\n│ └── build-base-image.sh\\n├── kami-gateway/\\n│ ├── README.md\\n│ ├── build-base-image.sh\\n│ ├── go.mod\\n│ └── go.sum\\n└── kami-spider-monorepo/\\n ├── README.md\\n ├── build-base-image.sh\\n ├── pyproject.toml\\n └── uv.lock\\n\"","current_document_structure":"WikiEncrypted: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","catalogue_think_content":"WikiEncrypted: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","recovery_checkpoint":"wiki_generation_completed","last_commit_id":"49e55954d31392dc12829e0d4e3efb447a6dd00c","last_commit_update":"2025-12-17T15:08:41+08:00","gmt_create":"2025-11-09T23:05:06.944566+08:00","gmt_modified":"2025-12-17T15:30:20.315675+08:00","extend_info":"{\"language\":\"zh\",\"active\":true,\"branch\":\"master\",\"shareStatus\":\"\",\"server_error_code\":\"\",\"cosy_version\":\"\"}"}} |