From 0239d395e27ecf971857c246c18b817f0598a8b9 Mon Sep 17 00:00:00 2001 From: Ran <16112591+chen-ran@users.noreply.github.com> Date: Tue, 24 Feb 2026 00:08:36 +0800 Subject: [PATCH] chore: update docker compose image --- .github/workflows/docker.yml | 12 ++-- README.md | 5 ++ README_CN.md | 5 ++ docker-compose.yml | 27 ++----- docker/docker-compose.cn.yml | 13 ++++ docker/docker-compose.yml | 135 +++++++++++++++++++++++++++++++++++ 6 files changed, 169 insertions(+), 28 deletions(-) create mode 100644 docker/docker-compose.cn.yml create mode 100644 docker/docker-compose.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 43fd5f0c..7baef3af 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -3,11 +3,13 @@ name: Docker on: push: branches: [main] - tags: ["v*.*.*"] + tags: ["v*"] paths-ignore: - "docs/**" - "**.md" - "devenv/**" + release: + types: [published] pull_request: branches: [main] paths-ignore: @@ -52,7 +54,7 @@ jobs: ghcr.io/${{ github.repository_owner }}/${{ matrix.image }} tags: | type=raw,value=dev,enable=${{ github.ref == 'refs/heads/main' }} - type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref_name, '-') }} + type=raw,value=latest,enable=${{ github.event_name == 'release' || (startsWith(github.ref, 'refs/tags/') && !contains(github.ref_name, '-')) }} type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} @@ -71,14 +73,14 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub - if: github.event_name == 'push' + if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry - if: github.event_name == 'push' + if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: registry: ghcr.io @@ -90,7 +92,7 @@ jobs: with: context: . file: ${{ matrix.dockerfile }} - push: ${{ github.event_name == 'push' }} + push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} platforms: ${{ startsWith(github.ref, 'refs/tags/') && 'linux/amd64,linux/arm64' || 'linux/amd64' }} diff --git a/README.md b/README.md index b6255670..a699b940 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,11 @@ cd Memoh sudo docker compose up -d ``` +> If you experience slow image pulls, use the CN override: +```bash +sudo docker compose -f docker-compose.yml -f docker/docker-compose.cn.yml up -d +``` + > On macOS or if your user is in the `docker` group, `sudo` is not required. Visit after startup. Default login: `admin` / `admin123` diff --git a/README_CN.md b/README_CN.md index 957692b7..6fea3dbb 100644 --- a/README_CN.md +++ b/README_CN.md @@ -44,6 +44,11 @@ cd Memoh sudo docker compose up -d ``` +> 若镜像拉取较慢,可使用中国大陆镜像源配置: +```bash +sudo docker compose -f docker-compose.yml -f docker/docker-compose.cn.yml up -d +``` + > macOS 或用户已在 `docker` 用户组中时,无需 `sudo`。 启动后访问 。默认登录:`admin` / `admin123` diff --git a/docker-compose.yml b/docker-compose.yml index 225b2afc..a9f348b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,13 +39,7 @@ services: - memoh-network migrate: - build: - context: . - dockerfile: docker/Dockerfile.server - args: - - VERSION=${MEMOH_VERSION:-dev} - - COMMIT_HASH=${MEMOH_COMMIT:-unknown} - - BUILD_TIME=${MEMOH_BUILD_TIME:-unknown} + image: memohai/server:latest container_name: memoh-migrate entrypoint: ["/app/memoh-server", "migrate", "up"] volumes: @@ -58,13 +52,7 @@ services: - memoh-network server: - build: - context: . - dockerfile: docker/Dockerfile.server - args: - - VERSION=${MEMOH_VERSION:-dev} - - COMMIT_HASH=${MEMOH_COMMIT:-unknown} - - BUILD_TIME=${MEMOH_BUILD_TIME:-unknown} + image: memohai/server:latest container_name: memoh-server privileged: true pid: host @@ -86,9 +74,7 @@ services: - memoh-network agent: - build: - context: . - dockerfile: docker/Dockerfile.agent + image: memohai/agent:latest container_name: memoh-agent volumes: - ${MEMOH_CONFIG:-./conf/app.docker.toml}:/config.toml:ro @@ -102,12 +88,7 @@ services: - memoh-network web: - build: - context: . - dockerfile: docker/Dockerfile.web - args: - - VITE_API_URL=${VITE_API_URL:-/api} - - VITE_AGENT_URL=${VITE_AGENT_URL:-/agent} + image: memohai/web:latest container_name: memoh-web ports: - "8082:8082" diff --git a/docker/docker-compose.cn.yml b/docker/docker-compose.cn.yml new file mode 100644 index 00000000..d4afe9d4 --- /dev/null +++ b/docker/docker-compose.cn.yml @@ -0,0 +1,13 @@ +services: + postgres: + image: memoh.cn/postgres:18-alpine + qdrant: + image: memoh.cn/qdrant/qdrant:latest + migrate: + image: memoh.cn/memohai/server:latest + server: + image: memoh.cn/memohai/server:latest + agent: + image: memoh.cn/memohai/agent:latest + web: + image: memoh.cn/memohai/web:latest \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 00000000..2394359e --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,135 @@ +name: "memoh" +services: + postgres: + image: postgres:18-alpine + container_name: memoh-postgres + environment: + POSTGRES_DB: memoh + POSTGRES_USER: memoh + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-memoh123} + volumes: + - postgres_data:/var/lib/postgresql + - /etc/localtime:/etc/localtime:ro + expose: + - "5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U memoh"] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + networks: + - memoh-network + + qdrant: + image: qdrant/qdrant:latest + container_name: memoh-qdrant + volumes: + - qdrant_data:/qdrant/storage + expose: + - "6333" + - "6334" + healthcheck: + test: ["CMD-SHELL", "timeout 10s bash -c ':> /dev/tcp/127.0.0.1/6333' || exit 1"] + interval: 10s + timeout: 5s + retries: 5 + restart: unless-stopped + networks: + - memoh-network + + migrate: + build: + context: . + dockerfile: Dockerfile.server + args: + - VERSION=${MEMOH_VERSION:-dev} + - COMMIT_HASH=${MEMOH_COMMIT:-unknown} + - BUILD_TIME=${MEMOH_BUILD_TIME:-unknown} + container_name: memoh-migrate + entrypoint: ["/app/memoh-server", "migrate", "up"] + volumes: + - ${MEMOH_CONFIG:-./conf/app.docker.toml}:/app/config.toml:ro + depends_on: + postgres: + condition: service_healthy + restart: "no" + networks: + - memoh-network + + server: + build: + context: . + dockerfile: Dockerfile.server + args: + - VERSION=${MEMOH_VERSION:-dev} + - COMMIT_HASH=${MEMOH_COMMIT:-unknown} + - BUILD_TIME=${MEMOH_BUILD_TIME:-unknown} + container_name: memoh-server + privileged: true + pid: host + volumes: + - ${MEMOH_CONFIG:-./conf/app.docker.toml}:/app/config.toml:ro + - containerd_data:/var/lib/containerd + - server_cni_state:/var/lib/cni + - memoh_data:/opt/memoh/data + - /etc/localtime:/etc/localtime:ro + ports: + - "8080:8080" + depends_on: + migrate: + condition: service_completed_successfully + qdrant: + condition: service_healthy + restart: unless-stopped + networks: + - memoh-network + + agent: + build: + context: . + dockerfile: Dockerfile.agent + container_name: memoh-agent + volumes: + - ${MEMOH_CONFIG:-./conf/app.docker.toml}:/config.toml:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "8081:8081" + depends_on: + - server + restart: unless-stopped + networks: + - memoh-network + + web: + build: + context: . + dockerfile: Dockerfile.web + args: + - VITE_API_URL=${VITE_API_URL:-/api} + - VITE_AGENT_URL=${VITE_AGENT_URL:-/agent} + container_name: memoh-web + ports: + - "8082:8082" + depends_on: + - server + - agent + restart: unless-stopped + networks: + - memoh-network + +volumes: + postgres_data: + driver: local + qdrant_data: + driver: local + containerd_data: + driver: local + memoh_data: + driver: local + server_cni_state: + driver: local + +networks: + memoh-network: + driver: bridge