feat(devenv): add containerized development environment (#116)

* feat(devenv): add containerized development environment

Replace local-process dev workflow with a fully containerized stack
using docker compose. This enables consistent development across
machines without requiring local Go/Node toolchains or containerd.

- Add Dockerfile.server.dev with containerd + CNI networking support
- Add Dockerfile.web.dev for frontend dev server
- Add server-dev-entrypoint.sh for containerd lifecycle management
- Expand devenv/docker-compose.yml with server, agent, web, migrate
  and deps services with proper health checks and dependency ordering
- Update app.dev.toml to use container service names instead of localhost
- Refactor mise.toml dev tasks to drive docker compose workflow
- Support agent_gateway.server_addr in config package for inter-container
  communication

* feat(devenv): add hot-reload and registry mirror support

- Add air for Go server hot-reload in dev containers
- Fix agent_gateway host in dev config (0.0.0.0 -> agent)
- Add configurable registry mirror for China mainland users
- Unify MCP image refs via MCPConfig.ImageRef()

* feat(scripts): add China mainland mirror option to install script

Prompt users to opt-in to memoh.cn mirror during installation,
which applies docker-compose.cn.yml overlay and sets registry
in config.toml for MCP image pulls.
This commit is contained in:
BBQ
2026-02-26 17:32:19 +08:00
committed by GitHub
parent 19ab2fef3a
commit d6aebf654f
19 changed files with 354 additions and 103 deletions
+5 -5
View File
@@ -97,16 +97,16 @@ Memoh/
| Command | Description |
|---------|-------------|
| `mise run dev` | Start the full dev environment (backend + agent gateway + frontend) |
| `mise run setup` | Initialize dev environment (sqlc gen + DB migration + dependency install) |
| `mise run dev` | Start the containerized dev environment (all services) |
| `mise run dev:down` | Stop the dev environment |
| `mise run dev:logs` | View dev environment logs |
| `mise run dev:restart` | Restart a service (e.g. `-- server`) |
| `mise run setup` | Copy config + install dependencies |
| `mise run sqlc-generate` | Regenerate Go code after modifying SQL files |
| `mise run swagger-generate` | Generate Swagger documentation |
| `mise run sdk-generate` | Generate TypeScript SDK (depends on swagger-generate) |
| `mise run db-up` | Initialize and migrate the database |
| `mise run db-down` | Drop the database |
| `mise run //agent:dev` | Start Agent Gateway only |
| `mise run //cmd/agent:start` | Start the backend server only |
| `mise run //packages/web:dev` | Start the frontend dev server only |
### Docker Deployment