mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
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:
@@ -48,18 +48,27 @@ depends = [
|
||||
description = "Generate SQL code"
|
||||
run = "sqlc generate"
|
||||
|
||||
[tasks.infra]
|
||||
description = "Start dev infrastructure (postgres + qdrant)"
|
||||
run = "docker compose -f devenv/docker-compose.yml up -d"
|
||||
[tasks.dev]
|
||||
description = "Start development environment"
|
||||
run = """
|
||||
#!/bin/bash
|
||||
set -e
|
||||
cp conf/app.dev.toml config.toml
|
||||
docker compose -f devenv/docker-compose.yml up --build
|
||||
"""
|
||||
|
||||
[tasks.infra-down]
|
||||
description = "Stop dev infrastructure"
|
||||
run = "docker compose -f devenv/docker-compose.yml down"
|
||||
[tasks."dev:down"]
|
||||
description = "Stop development environment"
|
||||
run = "docker compose -f devenv/docker-compose.yml down --remove-orphans"
|
||||
|
||||
[tasks.infra-logs]
|
||||
description = "View dev infrastructure logs"
|
||||
[tasks."dev:logs"]
|
||||
description = "View development logs"
|
||||
run = "docker compose -f devenv/docker-compose.yml logs -f"
|
||||
|
||||
[tasks."dev:restart"]
|
||||
description = "Restart a service (usage: mise run dev:restart -- server)"
|
||||
run = "docker compose -f devenv/docker-compose.yml restart $@"
|
||||
|
||||
[tasks.db-up]
|
||||
description = "Initialize and Migrate Database"
|
||||
run = "scripts/db-up.sh"
|
||||
@@ -92,20 +101,10 @@ description = "Install CLI"
|
||||
depends = ["//:pnpm-install"]
|
||||
run = "cd packages/cli && npm install -g"
|
||||
|
||||
[task.install-socktainer]
|
||||
[tasks.install-socktainer]
|
||||
description = "Install socktainer"
|
||||
run = "brew tap socktainer/tap && brew install socktainer"
|
||||
|
||||
[tasks.dev]
|
||||
description = "Start development environment"
|
||||
depends = [
|
||||
"//:swagger-generate",
|
||||
"//:sdk-generate",
|
||||
"//agent:dev",
|
||||
"//cmd/agent:start",
|
||||
"//packages/web:dev",
|
||||
]
|
||||
|
||||
[tasks.setup]
|
||||
description = "Setup development environment"
|
||||
depends = [
|
||||
@@ -117,26 +116,6 @@ depends = [
|
||||
run = """
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Auto-copy dev config if config.toml doesn't exist
|
||||
if [ ! -f config.toml ]; then
|
||||
cp conf/app.dev.toml config.toml
|
||||
echo '✓ Copied conf/app.dev.toml → config.toml'
|
||||
fi
|
||||
|
||||
# Start dev infrastructure
|
||||
docker compose -f devenv/docker-compose.yml up -d
|
||||
|
||||
# Wait for postgres to be healthy
|
||||
echo 'Waiting for postgres...'
|
||||
until docker compose -f devenv/docker-compose.yml exec -T postgres pg_isready -U memoh >/dev/null 2>&1; do
|
||||
sleep 1
|
||||
done
|
||||
echo '✓ Postgres ready'
|
||||
|
||||
# Run migrations
|
||||
scripts/db-up.sh
|
||||
|
||||
cp conf/app.dev.toml config.toml
|
||||
echo '✓ Setup complete! Run: mise run dev'
|
||||
"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user