云原生运维容器运行时【免费下载链接】arcaneModern Docker Management, Designed for Everyone项目地址https://gitcode.com/gh_mirrors/arcane2/arcane点击查看免费下载Arcane 是一个面向所有人的现代化 Docker 管理平台采用 Go 后端、SvelteKit 前端、无头 Agent 模式与 Cobra CLI 的多模块架构。本文以仓库根目录的 CONTRIBUTING.md 为骨架结合仓库内真实的开发脚本、Compose 配置、Air 热重载配置与 VS Code 任务定义完整讲解贡献者在 Arcane 上从环境搭建、日常开发、代码质量把关到提交 Pull Request 的全流程让你在几分钟内跑起一个前后端双热重载的开发环境并让你的提交一次通过评审。参与方式总览Arcane 欢迎以下类型的贡献你可以根据自己的兴趣与技能选择切入点报告 Bug使用仓库提供的 Issue 模板提交缺陷报告附上可复现步骤、预期行为与实际行为。建议新功能在项目的 Discussions 中以 feature-requests 分类发起提案与投票维护者会在方案成熟时创建关联的实现 Issue。代码贡献涵盖前端Svelte/TypeScript、后端Go与 DevOpsDocker 镜像、CI 脚本等多个层面。文档改进完善 README、贡献指南、配置说明等文档内容。翻译与本地化通过 Crowdin 平台为多语言界面贡献力量。仓库根目录的 crowdin.yml 与 frontend/messages/包含 zh-CN、zh-TW、ja、ko 等 23 个语言文件展示了当前的多语言矩阵。测试与质量保障运行端到端测试、补充单元测试、参与评审与回归验证。使用 AI 工具辅助贡献前请务必先阅读仓库的 AI_POLICY.md其中对 AI 参与贡献的披露义务、人工验证要求与代码规范匹配有明确约束下文也会专门展开。开发环境快速启动前置条件搭建开发环境需要以下工具Docker 与 Docker ComposeArcane 的整套开发环境都运行在 Docker 容器中所有依赖Node 工具链、Go 工具链、数据库等都由容器接管。VS Code 系列 IDE项目内置了完整的 VS Code 任务与工作区配置推荐使用以获得最佳开发体验。Vite负责 Node 工具链、格式化、Lint 与预提交钩子在 Docker 之外工作时。安装命令curl -fsSL https://vite.plus | bashgci 与 gofumptGo 代码的导入分组与格式化工具两者都需要安装go install github.com/daixiang0/gcilatest go install mvdan.cc/gofumptlatest安装后请确保 Go 的二进制目录已加入PATH。工作目录约定除非特别说明本文所有命令都应在项目根目录arcane/下执行。Fork 并克隆git clone https://github.com/your-username/arcane.git cd arcane启动开发环境从项目根目录执行./scripts/development/dev.sh start仅此一条命令开发环境就会自动完成以下工作同时启动前端与后端并启用热重载通过 Docker 处理全部依赖建立健康检查与监控为开发数据创建持久化存储。启动后即可访问前端http://localhost:3000SvelteKit带 HMR 热更新后端http://localhost:3552Go带 Air 热重载源码视角dev.sh 到底做了什么dev.sh并不是一个简单的封装脚本它在启动前会做完整的依赖自检。看 scripts/development/dev.sh 的实现可以发现第 123-169 行check_requirements函数依次检测docker命令、Docker daemon 是否可达docker info、docker compose version是否可用如果 Docker 或 Compose 缺失会提示通过项目自带的download-docker.sh与download-compose.sh自动安装到项目目录dist/无需系统级安装daemon 未运行时直接报错退出提示先启动 Docker Desktop 或 Docker daemon。随后ensure_project_root第 171-180 行会校验docker/compose.dev.yaml是否存在并cd到项目根目录确保所有相对路径正确。启动逻辑第 239-253 行实际执行的是docker compose -f docker/compose.dev.yaml -p arcane-dev up -d --build对应的 docker/compose.dev.yaml 定义了三个服务服务端口说明frontend3000通过 docker/Dockerfile.dev 的frontend-dev阶段构建挂载前端源码并隔离node_modules使用 pnpm 缓存卷加速安装backend3552通过backend-dev阶段构建挂载go.work、backend/、cli/、types/三个 Go 模块并把/var/run/docker.sock传入容器arcane-agent3553可选 agent 开发服务profiles: [agent]通过AGENT_MODEtrue以独立 Agent 模式运行两个核心服务都配置了健康检查healthcheck前端探测http://localhost:3000后端探测http://localhost:3552/api/health。开发数据存放在命名卷arcane-dev-dataGo 构建缓存与模块缓存分别使用arcane-go-build-cache与arcane-go-mod-cache卷持久化——这正是dev.sh提供缓存清理与预热功能的基础。后端的热重载由 backend/.air.toml 驱动Air 监听go、tpl、tmpl、html文件变化include_ext排除.bin、data、node_modules、frontend/dist等目录与_test.go、_mock.go文件构建产物输出到.bin/arcanetmp_dir与bin配置clean_on_exit false保留增量构建缓存以加快迭代。VS Code 集成为了获得最佳开发体验项目仓库内置了 VS Code 任务与工作区配置。推荐扩展打开项目后 VS Code 会提示安装推荐扩展见 .vscode/extensions.json它们提供Docker 集成与容器管理Go 语言支持与调试Svelte/TypeScript 支持集成终端管理。一键开发命令使用Ctrl/CmdShiftP→ “Tasks: Run Task” 即可调用以下任务对应实现见 .vscode/tasks.json任务说明Start启动开发环境默认构建任务Stop停止所有服务Restart重启所有服务Rebuild重建容器依赖变更后使用Clean移除所有容器与卷Logs交互式日志查看可下拉选择服务Open Frontend在浏览器中打开前端tasks.json 中还额外提供了两个实用任务Show Environment Variables查看指定服务容器的环境变量与Shell into Service进入 frontend/backend/agent 容器交互式 shell它们与dev.sh的env、shell子命令一一对应。快速构建快捷键按下Ctrl/CmdShiftB会运行默认构建任务即 Start Environment因为 Start 任务在 tasks.json 中被声明为group: {kind: build, isDefault: true}。如果 VS Code 任务不出现请确认打开的是项目根目录arcane/而非子目录或上级目录安装推荐扩展后重启 VS Code。日常开发工作流修改代码的标准流程创建特性分支git switch -c feat/my-awesome-feature # 或 git switch -c fix/issue-123启动开发环境从项目根目录./scripts/development/dev.sh start # 或使用 VS Code Task: Start监控日志任选一种方式# 交互式选择器 ./scripts/development/dev.sh logs # 指定服务 ./scripts/development/dev.sh logs frontend ./scripts/development/dev.sh logs backend # 或使用 VS Code Task: Logs编写代码热重载会自动生效前端Vite 即时 HMR保存即刷新后端Air 自动重建并重启无需手动干预。开发环境管理命令速查scripts/development/dev.sh 提供完整的生命周期管理子命令第 736-772 行的main分派# 启动开发环境 ./scripts/development/dev.sh start # 查看服务状态 ./scripts/development/dev.sh status # 停止所有服务 ./scripts/development/dev.sh stop # 重启服务用于配置变更 ./scripts/development/dev.sh restart # 重建容器用于依赖变更 ./scripts/development/dev.sh rebuild # 清理环境交互式菜单见下文 ./scripts/development/dev.sh clean # 查看指定服务容器内的环境变量 ./scripts/development/dev.sh env backend # 进入指定服务容器 shell ./scripts/development/dev.sh shell frontend值得一提的是dev.sh clean是一个分级清理菜单第 435-534 行包含 10 个选项查看状态、清理 Go 构建缓存恢复约 30-60 秒、清理模块缓存恢复约 2-3 分钟、清理本地二进制恢复约 2-5 秒、软重启容器、保留数据重置 Docker 环境、清理全部构建缓存、核弹级重置需输入DESTROY确认、缓存预热与缓存优化。按需选择避免误删开发数据。调试与日志# 交互式日志选择 ./scripts/development/dev.sh logs # 所有服务 ./scripts/development/dev.sh logs # 仅前端Vite/SvelteKit ./scripts/development/dev.sh logs frontend # 仅后端Go/Air ./scripts/development/dev.sh logs backend # 进入容器 shell ./scripts/development/dev.sh shell frontend ./scripts/development/dev.sh shell backenddev.sh的日志子命令对服务名做了白名单校验仅frontend、backend、arcane-agent/agent并把agent规范化为arcane-agent。Justfile 快捷命令项目根目录的 Justfile 按类别组织了常见工作流先运行just --list查看全部类别与目标# Development just dev docker just dev logs # Build just build single frontend just build single backend # Tests just test all just test backend # Quality checks just lint frontend just format frontend just format all --check # Dependencies just deps install all结合 Justfile 源码可以进一步了解这些目标的底层实现just dev除 Docker 模式外还支持frontendvp -C frontend run dev、backendcd backend air、agent以EDGE_AGENTtrue启动边缘 Agent需AGENT_TOKEN环境变量与all并行运行前后端并妥善处理信号。just buildsingle构建单个应用代码image通过docker buildx构建 manager/agent 容器镜像支持--push与多平台。just test支持e2ePlaywright 端到端见 tests/playwright.config.ts、backend、cli、types四个目标。其中backend测试会携带exclude_frontend,buildables构建标签并以-race竞态检测运行。just formatall目标会依次执行前端/JS/Go/Justfile 四类格式化即使某项失败也会继续执行其余项保证不遗漏。代码质量规范自动格式化与 Lint两个服务在开发期间都内置了格式化与 Lint前端 / TypeScript由 Vite 管理vp fmt、vp check加上 Svelte/TypeScript 类型检查格式化与 Lint 规则位于根目录 vite.config.ts。后端Go fmt Go vet内置于 Air 热重载流程中。预提交钩子格式化检查会通过 Vite 的 git hook 分发器在暂存文件上自动运行。克隆后启用一次即可vp hooks enable手动检查命令# JS/TS 格式化与 LintVite从项目根目录执行 vp fmt --check vp check # 或通过 Justfile just format all --check just lint js # 在 Docker 开发环境内 docker compose -f docker/compose.dev.yaml exec frontend pnpm check docker compose -f docker/compose.dev.yaml exec frontend pnpm format # 后端检查 docker compose -f docker/compose.dev.yaml exec backend go fmt ./... docker compose -f docker/compose.dev.yaml exec backend go vet ./...从 Justfile 源码可以看到 Go 格式化遵循严格规范第 223-230 行先由gci write按“标准库分组 → 默认分组 → localmodule 分组”的自定义顺序整理导入标准库分组清单在第 11 行go_stdlib_section中显式声明再用gofumpt -w -extra格式化。后端 Lint 使用golangci-lint共享配置.golangci.yml前端 Lint 对 frontend、tests、email-templates 三个 workspace 分别执行类型检查。代码风格约定进阶对于深入代码贡献的开发者AGENTS.md 给出了仓库级别的工程约定核心要点包括仓库布局Go workspacego.work包含backend/应用、HTTP API、领域逻辑、cli/Cobra CLI 及其 API 客户端、types/后端与 CLI 共享的公开契约三个模块前端位于frontend/端到端测试位于tests/。领域文件集每个领域使用module.go组合与路由注册、service.go业务逻辑、model.go持久化模型、handler.goHTTP 输入输出、helpers.go包内辅助函数的标准文件集较大的子特性放入domain/children/feature/。文件名规则生产文件名必须是单词不带下划线构建标签文件可追加标签后缀如service_playwright.go、helpers_unix.go测试文件使用生产文件基名加_test.go紧邻放置。技术选型Echo v5 作为路由器Huma v2 用于类型化 REST/OpenAPI 操作结构化日志使用slog错误处理使用标准errors与fmt.Errorf(…: %w)。前端规范Svelte 5 runes$props、$state、$derived、$effect禁止export let、$:、on:event等旧语法所有渲染字符串必须走 Paraglide 多语言消息。提交信息规范Arcane 使用Conventional Commits约定式提交保证提交信息清晰、语义化git commit -m feat: add user authentication git commit -m fix: resolve Docker volume mounting issue git commit -m docs: update development setup guide git commit -m refactor: simplify API response handling类型feat、fix、docs、style、refactor、test、chore。选择类型时应遵循“一次提交只做一件事”的原则让评审者能从提交信息直接理解变更意图。Pull Request 流程五个关键步骤保持变更聚焦每个 PR 只包含一个功能或修复测试你的变更确保前端与后端都能正常工作更新文档如果修改了 API 或新增功能同步更新文档关联 Issue使用 “Closes #123” 或 “Fixes #456” 引用相关 Issue及时响应积极处理评审反馈。PR 检查清单提交 PR 前逐项确认代码在开发环境中构建成功前端热重载工作正常后端热重载工作正常无 Lint 错误提交信息符合约定式提交格式PR 描述说明了变更内容及其必要性关于测试AGENTS.md 强调“添加测试”与“运行测试”是两件独立的事修复与重构应更新既有测试并运行相关覆盖仅新功能需要新增测试运行just test backend、just test cli、just test types覆盖对应模块浏览器覆盖使用just test e2ejust test all会包含 E2E 测试并需要其前置环境。故障排查开发启动检查清单当./scripts/development/dev.sh start失败或应用无法加载时按以下顺序排查环境问题先验证环境再改代码确认 Docker 已安装且 daemon 可达docker info docker compose version从项目根目录确认开发 Compose 文件有效docker compose -f docker/compose.dev.yaml -p arcane-dev config启动堆栈并检查容器状态./scripts/development/dev.sh start ./scripts/development/dev.sh status检查预期的开发端点curl -f http://localhost:3000 curl -f http://localhost:3552/api/health如果某服务不健康先读取针对性日志./scripts/development/dev.sh logs frontend ./scripts/development/dev.sh logs backend常见问题端口冲突# 停止并清理一切从项目根目录 ./scripts/development/dev.sh clean # 检查冲突进程 lsof -i :3000 # 前端端口 lsof -i :3552 # 后端端口Docker 问题# 重置 Docker 环境从项目根目录 ./scripts/development/dev.sh clean docker system prune -f # 重新启动开发环境 ./scripts/development/dev.sh startVS Code 任务不工作确认在 VS Code 中打开的是项目根目录arcane/而非子目录或上级目录按提示安装推荐扩展任务不出现时重启 VS Code运行终端命令时确认处于正确的工作目录。需要帮助时Bug 通过 Issue 模板提交功能建议与开发问题在仓库 Discussions 中发起讨论。ARCANE 的维护者都是志愿者低质量、未经验证的提交会消耗他们宝贵的时间——请提交前务必自测。AI 辅助贡献须知Arcane 明确欢迎负责任地使用 AI 工具但 AI_POLICY.md 对 AI 辅助贡献设定了硬性规则必须披露声明所使用的 AI 工具及其参与程度必须人工验证AI 创建的 PR 必须经过真实环境的人工测试——启动开发环境、验证前端与后端正常、手动测试变更、确认无 Lint 错误、验证双端热重载必须符合项目模式AI 生成的代码必须遵循 AGENTS.md 中的既有约定Svelte 5 语法、service 模式、错误处理等不符合规范的代码会被拒绝Issue 与讨论同样要求人在回路AI 生成的内容必须经人工审阅与编辑后再提交禁止 AI 生成媒体内容图片、视频、音频等仅允许文本与代码。该政策的出发点并非反 AI而是对低质量 AI 提交的回应——它保护的是贡献质量而非工具本身。使用 AI 工具前请确保你的 AI 配置包含了 AGENTS.md 中描述的架构模式、反模式与项目特有约定。结语Arcane 的开发体验围绕“一条命令启动、双端热重载、规范化提交”设计dev.sh负责环境的自检、安装、启动、日志与分级清理Justfile统一了构建、测试、格式化与依赖管理VS Code 任务将这一切收敛为面板上的一键操作。无论你贡献的是代码、文档、翻译还是测试按照本文的流程从克隆仓库、启动环境到提交 PR都能让你的贡献顺利融入这个现代化 Docker 管理平台。赞分享云原生运维容器运行时【免费下载链接】arcaneModern Docker Management, Designed for Everyone项目地址https://gitcode.com/gh_mirrors/arcane2/arcane点击查看免费下载相关推荐Lenis 贡献指南从零搭建 bun Monorepo 开发环境到提交高质量 PRLenis 贡献指南从零搭建 bun Monorepo 开发环境到提交高质量 PR 本篇文章以 Lenis一款开源的平滑滚动库仓库标语 Smooth s前端SkyWalking 监控 Apache APISIX 网关基于 OpenTelemetry Collector 与 Prometheus 插件指标接入实战SkyWalking 监控 Apache APISIX 网关基于 OpenTelemetry Collector 与 Prometheus 插件指标接入实战物联网智能家居IoT协议边缘网关howdoi 贡献指南从搭建开发环境到提交高质量 PR 的完整实践howdoi 贡献指南从搭建开发环境到提交高质量 PR 的完整实践 本指南以仓库文档 docs/contributing_to_howdoi.md https开发工具CLI上一篇AssetRipper把 Unity .assets/.bundle 资源包变成编辑器里能直接用的原生资产下一篇OpenCore Legacy Patcher终极指南让老Mac焕发新生的5个简单步骤创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考