mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
d6aebf654f
* 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.
61 lines
1.4 KiB
Docker
61 lines
1.4 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
FROM golang:1.25-alpine
|
|
|
|
WORKDIR /workspace
|
|
|
|
RUN go install github.com/air-verse/air@latest
|
|
|
|
RUN apk add --no-cache \
|
|
bash \
|
|
ca-certificates \
|
|
cni-plugins \
|
|
containerd \
|
|
containerd-ctr \
|
|
git \
|
|
iptables \
|
|
make \
|
|
tzdata \
|
|
wget \
|
|
&& mkdir -p /opt/cni/bin \
|
|
&& (cp -a /usr/lib/cni/. /opt/cni/bin/ 2>/dev/null || true) \
|
|
&& (cp -a /usr/libexec/cni/. /opt/cni/bin/ 2>/dev/null || true) \
|
|
&& mkdir -p /etc/cni/net.d /var/lib/cni /run/containerd /var/lib/containerd /opt/memoh/data
|
|
|
|
RUN printf '%s\n' \
|
|
'{' \
|
|
' "cniVersion": "1.0.0",' \
|
|
' "name": "memoh-cni",' \
|
|
' "plugins": [' \
|
|
' {' \
|
|
' "type": "bridge",' \
|
|
' "bridge": "cni0",' \
|
|
' "isGateway": true,' \
|
|
' "ipMasq": true,' \
|
|
' "hairpinMode": true,' \
|
|
' "ipam": {' \
|
|
' "type": "host-local",' \
|
|
' "ranges": [[' \
|
|
' { "subnet": "10.88.0.0/16" }' \
|
|
' ]],' \
|
|
' "routes": [' \
|
|
' { "dst": "0.0.0.0/0" }' \
|
|
' ]' \
|
|
' }' \
|
|
' },' \
|
|
' {' \
|
|
' "type": "portmap",' \
|
|
' "capabilities": { "portMappings": true }' \
|
|
' }' \
|
|
' ]' \
|
|
'}' > /etc/cni/net.d/10-memoh.conflist
|
|
|
|
COPY docker/server-dev-entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
VOLUME ["/var/lib/containerd", "/opt/memoh/data"]
|
|
|
|
EXPOSE 8080
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|