This is an automated email from the ASF dual-hosted git repository.

jin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hugegraph.git


The following commit(s) were added to refs/heads/master by this push:
     new 9126c80e4 docs: update Docker deployment docs for bridge networking 
migration (#2963)
9126c80e4 is described below

commit 9126c80e414c073b60fc074361b211cfb409e0eb
Author: Himanshu Verma <[email protected]>
AuthorDate: Mon Mar 23 18:27:55 2026 +0530

    docs: update Docker deployment docs for bridge networking migration (#2963)
    
    - Create docker/README.md with full setup guide, env var reference,
      port table, health checks, and troubleshooting
    - Fix hugegraph-store/docs/deployment-guide.md: replace wrong env vars
      (GRPC_HOST, RAFT_ADDRESS etc.) with correct HG_* names
    - Update K8s manifest in deployment-guide.md to use HG_* env vars
    - Fix 7 files pointing to dead docker/example/ directory
    - Add Docker bridge network notes to PD configuration docs
    - Add distributed cluster section to server Docker README
    
    Relates to: #2952
    
    * docs: clarify temporary entrypoint mount workaround in docker/README.md
    
    The 3-node and single-node quickstart compose files currently mount
    entrypoint scripts from source as a workaround until updated Docker
    images are published with the new entrypoints baked in.
    
    Add a clear note explaining this temporary requirement so users are
    not confused about needing a full source clone to run the cluster.
    
    ---------
    
    Co-authored-by: imbajin <[email protected]>
---
 AGENTS.md                                        |   2 +-
 README.md                                        |  29 ++-
 docker/README.md                                 | 259 +++++++++++++++++++++++
 hugegraph-pd/AGENTS.md                           |   4 +-
 hugegraph-pd/README.md                           |  41 +++-
 hugegraph-pd/docs/configuration.md               |  29 ++-
 hugegraph-server/README.md                       |  21 ++
 hugegraph-server/hugegraph-dist/docker/README.md |  80 ++++---
 hugegraph-store/AGENTS.md                        |   2 +-
 hugegraph-store/README.md                        |  13 +-
 hugegraph-store/docs/deployment-guide.md         | 206 +++++-------------
 11 files changed, 480 insertions(+), 206 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
index bd40a313c..ce6ea35c5 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -231,7 +231,7 @@ For distributed development:
 3. Build Store: `mvn clean package -pl hugegraph-store -am -DskipTests`
 4. Build Server with HStore backend: `mvn clean package -pl hugegraph-server 
-am -DskipTests`
 
-See Docker Compose example: `hugegraph-server/hugegraph-dist/docker/example/`
+See Docker Compose examples: `docker/` directory. Single-node quickstart 
(pre-built images): `docker/docker-compose.yml`. Single-node dev build (from 
source): `docker/docker-compose.dev.yml`. 3-node cluster: 
`docker/docker-compose-3pd-3store-3server.yml`. See `docker/README.md` for full 
setup guide.
 
 ### Debugging Tips
 
diff --git a/README.md b/README.md
index eba5d980e..9b92fd2be 100644
--- a/README.md
+++ b/README.md
@@ -173,11 +173,11 @@ flowchart TB
 ### 5 Minutes Quick Start
 
 ```bash
-# Start HugeGraph with Docker
+# Start HugeGraph (standalone mode)
 docker run -itd --name=hugegraph -p 8080:8080 hugegraph/hugegraph:1.7.0
 
 # Verify server is running
-curl http://localhost:8080/apis/version
+curl http://localhost:8080/versions
 
 # Try a Gremlin query
 curl -X POST http://localhost:8080/gremlin \
@@ -208,13 +208,18 @@ docker run -itd --name=hugegraph -e 
PASSWORD=your_password -p 8080:8080 hugegrap
 ```
 
 For advanced Docker configurations, see:
-- [Docker 
Documentation](https://hugegraph.apache.org/docs/quickstart/hugegraph-server/#3-deploy)
-- [Docker Compose Example](./hugegraph-server/hugegraph-dist/docker/example)
-- [Docker README](hugegraph-server/hugegraph-dist/docker/README.md)
+
+* [Docker 
Documentation](https://hugegraph.apache.org/docs/quickstart/hugegraph-server/#3-deploy)
+* [Docker Compose Examples](./docker/)
+* [Docker README](./docker/README.md)
+* [Server Docker README](hugegraph-server/hugegraph-dist/docker/README.md)
+
+> **Docker Desktop (Mac/Windows)**: The 3-node distributed cluster 
(`docker/docker-compose-3pd-3store-3server.yml`) uses Docker bridge networking 
and works on all platforms including Docker Desktop. Allocate at least 12 GB 
memory to Docker Desktop.
 
 > **Note**: Docker images are convenience releases, not **official ASF 
 > distribution artifacts**. See [ASF Release Distribution 
 > Policy](https://infra.apache.org/release-distribution.html#dockerhub) for 
 > details.
 >
-> **Version Tags**: Use release tags (`1.7.0`, `1.x.0`) for stable versions. 
Use `latest` for development features.
+> **Version Tags**: Use release tags (e.g., `1.7.0`) for stable deployments. 
The `latest` tag should only be used for testing or development.
+
 
 <details>
 <summary><b>Option 2: Download Binary Package</b></summary>
@@ -283,14 +288,16 @@ Once the server is running, verify the installation:
 
 ```bash
 # Check server version
-curl http://localhost:8080/apis/version
+curl http://localhost:8080/versions
 
 # Expected output:
 # {
-#   "version": "1.7.0",
-#   "core": "1.7.0",
-#   "gremlin": "3.5.1",
-#   "api": "1.7.0"
+#   "versions": {
+#     "version": "v1",
+#     "core": "1.7.0",
+#     "gremlin": "3.5.1",
+#     "api": "1.7.0"
+#   }
 # }
 
 # Try Gremlin console (if installed locally)
diff --git a/docker/README.md b/docker/README.md
new file mode 100644
index 000000000..9bc21b1ba
--- /dev/null
+++ b/docker/README.md
@@ -0,0 +1,259 @@
+# HugeGraph Docker Deployment
+
+This directory contains Docker Compose files for running HugeGraph:
+
+| File | Description |
+|------|-------------|
+| `docker-compose.yml` | Single-node cluster using pre-built images from 
Docker Hub |
+| `docker-compose.dev.yml` | Single-node cluster built from source (for 
developers) |
+| `docker-compose-3pd-3store-3server.yml` | 3-node distributed cluster (PD + 
Store + Server) |
+
+## Prerequisites
+
+- **Docker Engine** 20.10+ (or Docker Desktop 4.x+)
+- **Docker Compose** v2 (included in Docker Desktop)
+- **Memory**: Allocate at least **12 GB** to Docker Desktop (Settings → 
Resources → Memory). The 3-node cluster runs 9 JVM processes (3 PD + 3 Store + 
3 Server) which are memory-intensive. Insufficient memory causes OOM kills that 
appear as silent Raft failures.
+
+> [!IMPORTANT]
+> The 12 GB minimum is for Docker Desktop. On Linux with native Docker, ensure 
the host has at least 12 GB of free memory.
+---
+
+## Single-Node Setup
+
+Two compose files are available for running a single-node cluster (1 PD + 1 
Store + 1 Server):
+
+### Option A: Quick Start (pre-built images)
+
+Uses pre-built images from Docker Hub. Best for **end users** who want to run 
HugeGraph quickly.
+
+```bash
+cd docker
+HUGEGRAPH_VERSION=1.7.0 docker compose up -d
+```
+
+- Images: `hugegraph/pd:1.7.0`, `hugegraph/store:1.7.0`, 
`hugegraph/server:1.7.0`
+- `pull_policy: always` — always pulls the specified image tag
+
+> **Note**: Use release tags (e.g., `1.7.0`) for stable deployments. The 
`latest` tag is intended for testing or development only.
+- PD healthcheck endpoint: `/v1/health`
+- Single PD, single Store (`HG_PD_INITIAL_STORE_LIST: store:8500`), single 
Server
+- Server healthcheck endpoint: `/versions`
+
+### Option B: Development Build (build from source)
+
+Builds images locally from source Dockerfiles. Best for **developers** who 
want to test local changes.
+
+```bash
+cd docker
+docker compose -f docker-compose.dev.yml up -d
+```
+
+- Images: built from source via `build: context: ..` with Dockerfiles
+- No `pull_policy` — builds locally, doesn't pull
+- Entrypoint scripts are baked into the built image (no volume mounts)
+- PD healthcheck endpoint: `/v1/health`
+- Otherwise identical env vars and structure to the quickstart file
+
+### Key Differences
+
+| | `docker-compose.yml` (quickstart) | `docker-compose.dev.yml` (dev build) |
+|---|---|---|
+| **Images** | Pull from Docker Hub | Build from source |
+| **Who it's for** | End users | Developers |
+| **pull_policy** | `always` | not set (build) |
+
+**Verify** (both options):
+```bash
+curl http://localhost:8080/versions
+```
+
+---
+
+## 3-Node Cluster Quickstart
+
+```bash
+cd docker
+HUGEGRAPH_VERSION=1.7.0 docker compose -f 
docker-compose-3pd-3store-3server.yml up -d
+
+# To stop and remove all data volumes (clean restart)
+docker compose -f docker-compose-3pd-3store-3server.yml down -v
+```
+
+**Startup ordering** is enforced via `depends_on` with `condition: 
service_healthy`:
+
+1. **PD nodes** start first and must pass healthchecks (`/v1/health`)
+2. **Store nodes** start after all PD nodes are healthy
+3. **Server nodes** start after all Store nodes are healthy
+
+This ensures PD and Store are healthy before the server starts. The server 
entrypoint still performs a best-effort partition wait after launch, so 
partition assignment may take a little longer.
+
+**Verify the cluster is healthy**:
+
+```bash
+# Check PD health
+curl http://localhost:8620/v1/health
+
+# Check Store health
+curl http://localhost:8520/v1/health
+
+# Check Server (Graph API)
+curl http://localhost:8080/versions
+
+# List registered stores via PD
+curl http://localhost:8620/v1/stores
+
+# List partitions
+curl http://localhost:8620/v1/partitions
+```
+
+---
+
+## Environment Variable Reference
+
+Configuration is injected via environment variables. The old 
`docker/configs/application-pd*.yml` and 
`docker/configs/application-store*.yml` files are no longer used.
+
+### PD Environment Variables
+
+| Variable | Required | Default | Maps To (`application.yml`) | Description |
+|----------|----------|---------|-----------------------------|-------------|
+| `HG_PD_GRPC_HOST` | Yes | — | `grpc.host` | This node's hostname/IP for gRPC 
|
+| `HG_PD_RAFT_ADDRESS` | Yes | — | `raft.address` | This node's Raft address 
(e.g. `pd0:8610`) |
+| `HG_PD_RAFT_PEERS_LIST` | Yes | — | `raft.peers-list` | All PD peers (e.g. 
`pd0:8610,pd1:8610,pd2:8610`) |
+| `HG_PD_INITIAL_STORE_LIST` | Yes | — | `pd.initial-store-list` | Expected 
stores (e.g. `store0:8500,store1:8500,store2:8500`) |
+| `HG_PD_GRPC_PORT` | No | `8686` | `grpc.port` | gRPC server port |
+| `HG_PD_REST_PORT` | No | `8620` | `server.port` | REST API port |
+| `HG_PD_DATA_PATH` | No | `/hugegraph-pd/pd_data` | `pd.data-path` | Metadata 
storage path |
+| `HG_PD_INITIAL_STORE_COUNT` | No | `1` | `pd.initial-store-count` | Min 
stores for cluster availability |
+
+**Deprecated aliases** (still work but log a warning):
+
+| Deprecated | Use Instead |
+|------------|-------------|
+| `GRPC_HOST` | `HG_PD_GRPC_HOST` |
+| `RAFT_ADDRESS` | `HG_PD_RAFT_ADDRESS` |
+| `RAFT_PEERS` | `HG_PD_RAFT_PEERS_LIST` |
+| `PD_INITIAL_STORE_LIST` | `HG_PD_INITIAL_STORE_LIST` |
+
+### Store Environment Variables
+
+| Variable | Required | Default | Maps To (`application.yml`) | Description |
+|----------|----------|---------|-----------------------------|-------------|
+| `HG_STORE_PD_ADDRESS` | Yes | — | `pdserver.address` | PD gRPC addresses 
(e.g. `pd0:8686,pd1:8686,pd2:8686`) |
+| `HG_STORE_GRPC_HOST` | Yes | — | `grpc.host` | This node's hostname (e.g. 
`store0`) |
+| `HG_STORE_RAFT_ADDRESS` | Yes | — | `raft.address` | This node's Raft 
address (e.g. `store0:8510`) |
+| `HG_STORE_GRPC_PORT` | No | `8500` | `grpc.port` | gRPC server port |
+| `HG_STORE_REST_PORT` | No | `8520` | `server.port` | REST API port |
+| `HG_STORE_DATA_PATH` | No | `/hugegraph-store/storage` | `app.data-path` | 
Data storage path |
+
+**Deprecated aliases** (still work but log a warning):
+
+| Deprecated | Use Instead |
+|------------|-------------|
+| `PD_ADDRESS` | `HG_STORE_PD_ADDRESS` |
+| `GRPC_HOST` | `HG_STORE_GRPC_HOST` |
+| `RAFT_ADDRESS` | `HG_STORE_RAFT_ADDRESS` |
+
+### Server Environment Variables
+
+| Variable | Required | Default | Maps To | Description |
+|----------|----------|---------|-----------------------------|-------------|
+| `HG_SERVER_BACKEND` | Yes | — | `backend` in `hugegraph.properties` | 
Storage backend (e.g. `hstore`) |
+| `HG_SERVER_PD_PEERS` | Yes | — | `pd.peers` | PD cluster addresses (e.g. 
`pd0:8686,pd1:8686,pd2:8686`) |
+| `STORE_REST` | No | — | Used by `wait-partition.sh` | Store REST endpoint 
for partition verification (e.g. `store0:8520`) |
+| `PASSWORD` | No | — | Enables auth mode | Optional authentication password |
+
+**Deprecated aliases** (still work but log a warning):
+
+| Deprecated | Use Instead |
+|------------|-------------|
+| `BACKEND` | `HG_SERVER_BACKEND` |
+| `PD_PEERS` | `HG_SERVER_PD_PEERS` |
+
+---
+
+## Port Reference
+
+The table below reflects the published host ports in 
`docker-compose-3pd-3store-3server.yml`.
+The single-node compose file (`docker-compose.yml`) only publishes the 
REST/API ports (`8620`, `8520`, `8080`) by default.
+
+| Service | Container Port | Host Port | Protocol | Purpose |
+|---------|---------------|-----------|----------|---------|
+| pd0 | 8620 | 8620 | HTTP | REST API |
+| pd0 | 8686 | 8686 | gRPC | PD gRPC |
+| pd0 | 8610 | — | TCP | Raft (internal only) |
+| pd1 | 8620 | 8621 | HTTP | REST API |
+| pd1 | 8686 | 8687 | gRPC | PD gRPC |
+| pd2 | 8620 | 8622 | HTTP | REST API |
+| pd2 | 8686 | 8688 | gRPC | PD gRPC |
+| store0 | 8500 | 8500 | gRPC | Store gRPC |
+| store0 | 8510 | 8510 | TCP | Raft |
+| store0 | 8520 | 8520 | HTTP | REST API |
+| store1 | 8500 | 8501 | gRPC | Store gRPC |
+| store1 | 8510 | 8511 | TCP | Raft |
+| store1 | 8520 | 8521 | HTTP | REST API |
+| store2 | 8500 | 8502 | gRPC | Store gRPC |
+| store2 | 8510 | 8512 | TCP | Raft |
+| store2 | 8520 | 8522 | HTTP | REST API |
+| server0 | 8080 | 8080 | HTTP | Graph API |
+| server1 | 8080 | 8081 | HTTP | Graph API |
+| server2 | 8080 | 8082 | HTTP | Graph API |
+
+---
+
+## Healthcheck Endpoints
+
+| Service | Endpoint | Expected |
+|---------|----------|----------|
+| PD | `GET /v1/health` | `200 OK` |
+| Store | `GET /v1/health` | `200 OK` |
+| Server | `GET /versions` | `200 OK` with version JSON |
+
+---
+
+## Troubleshooting
+
+### Containers Exiting or Restarting (OOM Kills)
+
+**Symptom**: Containers exit with code 137, or restart loops. Raft logs show 
election timeouts.
+
+**Cause**: Docker Desktop does not have enough memory. The 9 JVM processes 
require at least 12 GB.
+
+**Fix**: Docker Desktop → Settings → Resources → Memory → set to **12 GB** or 
higher. Restart Docker Desktop.
+
+```bash
+# Check if containers were OOM killed
+docker inspect hg-pd0 | grep -i oom
+docker stats --no-stream
+```
+
+### Raft Leader Election Failure
+
+**Symptom**: PD logs show repeated `Leader election timeout`. Store nodes 
cannot register.
+
+**Cause**: PD nodes cannot reach each other on the Raft port (8610), or 
`HG_PD_RAFT_PEERS_LIST` is misconfigured.
+
+**Fix**:
+1. Verify all PD containers are running: `docker compose -f 
docker-compose-3pd-3store-3server.yml ps`
+2. Check PD logs: `docker logs hg-pd0`
+3. Verify network connectivity: `docker exec hg-pd0 ping pd1`
+4. Ensure `HG_PD_RAFT_PEERS_LIST` is identical on all PD nodes
+
+### Partition Assignment Not Completing
+
+**Symptom**: Server starts but graph operations fail. Store logs show 
`partition not found`.
+
+**Cause**: PD has not finished assigning partitions to stores, or stores did 
not register successfully.
+
+**Fix**:
+1. Check registered stores: `curl http://localhost:8620/v1/stores`
+2. Check partition status: `curl http://localhost:8620/v1/partitions`
+3. Wait for partition assignment (can take 1–3 minutes after all stores 
register)
+4. Check server logs for the `wait-partition.sh` script output: `docker logs 
hg-server0`
+
+### Connection Refused Errors
+
+**Symptom**: Stores cannot connect to PD, or Server cannot connect to Store.
+
+**Cause**: Services are using `127.0.0.1` instead of container hostnames, or 
the `hg-net` bridge network is misconfigured.
+
+**Fix**: Ensure all `HG_*` env vars use container hostnames (`pd0`, `store0`, 
etc.), not `127.0.0.1` or `localhost`.
diff --git a/hugegraph-pd/AGENTS.md b/hugegraph-pd/AGENTS.md
index c9ba2bcfa..aaaa861f3 100644
--- a/hugegraph-pd/AGENTS.md
+++ b/hugegraph-pd/AGENTS.md
@@ -247,7 +247,7 @@ store:
 ### Common Configuration Errors
 
 1. **Raft peer discovery failure**: `raft.peers-list` must include all PD 
nodes' `raft.address` values
-2. **Store connection issues**: `grpc.host` must be a reachable IP (not 
`127.0.0.1`) for distributed deployments
+2. **Store connection issues**: `grpc.host` must be a reachable IP (not 
`127.0.0.1`) for distributed deployments. In Docker bridge networking, use the 
container hostname (e.g., `pd0`) set via `HG_PD_GRPC_HOST` env var.
 3. **Split-brain scenarios**: Always run 3 or 5 PD nodes in production for 
Raft quorum
 4. **Partition imbalance**: Adjust `patrol-interval` for faster/slower 
rebalancing
 
@@ -331,7 +331,7 @@ docker run -d -p 8620:8620 -p 8686:8686 -p 8610:8610 \
   hugegraph-pd:latest
 
 # For production clusters, use Docker Compose or Kubernetes
-# See: hugegraph-server/hugegraph-dist/docker/example/
+# See: ../docker/docker-compose-3pd-3store-3server.yml and ../docker/README.md
 ```
 
 Exposed ports: 8620 (REST), 8686 (gRPC), 8610 (Raft)
diff --git a/hugegraph-pd/README.md b/hugegraph-pd/README.md
index 65d700e67..b900673ac 100644
--- a/hugegraph-pd/README.md
+++ b/hugegraph-pd/README.md
@@ -154,6 +154,36 @@ raft:
 
 For detailed configuration options and production tuning, see [Configuration 
Guide](docs/configuration.md).
 
+#### Docker Bridge Network Example
+
+When running PD in Docker with bridge networking (e.g., 
`docker/docker-compose-3pd-3store-3server.yml`), configuration is injected via 
environment variables instead of editing `application.yml` directly. Container 
hostnames are used instead of IP addresses:
+
+**pd0** container:
+```bash
+HG_PD_GRPC_HOST=pd0
+HG_PD_RAFT_ADDRESS=pd0:8610
+HG_PD_RAFT_PEERS_LIST=pd0:8610,pd1:8610,pd2:8610
+HG_PD_INITIAL_STORE_LIST=store0:8500,store1:8500,store2:8500
+```
+
+**pd1** container:
+```bash
+HG_PD_GRPC_HOST=pd1
+HG_PD_RAFT_ADDRESS=pd1:8610
+HG_PD_RAFT_PEERS_LIST=pd0:8610,pd1:8610,pd2:8610
+HG_PD_INITIAL_STORE_LIST=store0:8500,store1:8500,store2:8500
+```
+
+**pd2** container:
+```bash
+HG_PD_GRPC_HOST=pd2
+HG_PD_RAFT_ADDRESS=pd2:8610
+HG_PD_RAFT_PEERS_LIST=pd0:8610,pd1:8610,pd2:8610
+HG_PD_INITIAL_STORE_LIST=store0:8500,store1:8500,store2:8500
+```
+
+See [docker/README.md](../docker/README.md) for the full environment variable 
reference.
+
 ### Verify Deployment
 
 Check if PD is running:
@@ -203,22 +233,25 @@ Build PD Docker image:
 
 ```bash
 # From project root
-docker build -f hugegraph-pd/Dockerfile -t hugegraph-pd:latest .
+docker build -f hugegraph-pd/Dockerfile -t hugegraph/pd:latest .
 
 # Run container
 docker run -d \
   -p 8620:8620 \
   -p 8686:8686 \
   -p 8610:8610 \
-  -v /path/to/conf:/hugegraph-pd/conf \
+  -e HG_PD_GRPC_HOST=<your-ip> \
+  -e HG_PD_RAFT_ADDRESS=<your-ip>:8610 \
+  -e HG_PD_RAFT_PEERS_LIST=<your-ip>:8610 \
+  -e HG_PD_INITIAL_STORE_LIST=<store-ip>:8500 \
   -v /path/to/data:/hugegraph-pd/pd_data \
   --name hugegraph-pd \
-  hugegraph-pd:latest
+  hugegraph/pd:latest
 ```
 
 For Docker Compose examples with HugeGraph Store and Server, see:
 ```
-hugegraph-server/hugegraph-dist/docker/example/
+docker/docker-compose-3pd-3store-3server.yml
 ```
 
 ## Documentation
diff --git a/hugegraph-pd/docs/configuration.md 
b/hugegraph-pd/docs/configuration.md
index f66ddbd04..e3ae4f6f2 100644
--- a/hugegraph-pd/docs/configuration.md
+++ b/hugegraph-pd/docs/configuration.md
@@ -53,7 +53,7 @@ grpc:
 
 | Parameter | Type | Default | Description |
 |-----------|------|---------|-------------|
-| `grpc.host` | String | `127.0.0.1` | **IMPORTANT**: Must be set to actual IP 
address (not `127.0.0.1`) for distributed deployments. Store and Server nodes 
connect to this address. |
+| `grpc.host` | String | `127.0.0.1` | **IMPORTANT**: Must be set to actual IP 
address (not `127.0.0.1`) for distributed deployments. Store and Server nodes 
connect to this address. In Docker bridge networking, set this to the container 
hostname (e.g., `pd0`) via `HG_PD_GRPC_HOST` env var. |
 | `grpc.port` | Integer | `8686` | gRPC server port. Ensure this port is 
accessible from Store and Server nodes. |
 
 **Production Notes**:
@@ -119,6 +119,31 @@ raft:
   peers-list: 192.168.1.10:8610,192.168.1.11:8610,192.168.1.12:8610
 ```
 
+### Docker Bridge Network Deployment
+
+When deploying PD in Docker with bridge networking (e.g., 
`docker/docker-compose-3pd-3store-3server.yml`), container hostnames are used 
instead of IP addresses. Configuration is injected via `HG_PD_*` environment 
variables:
+
+```yaml
+# pd0 — set via HG_PD_RAFT_ADDRESS and HG_PD_RAFT_PEERS_LIST env vars
+raft:
+  address: pd0:8610
+  peers-list: pd0:8610,pd1:8610,pd2:8610
+
+# pd1
+raft:
+  address: pd1:8610
+  peers-list: pd0:8610,pd1:8610,pd2:8610
+
+# pd2
+raft:
+  address: pd2:8610
+  peers-list: pd0:8610,pd1:8610,pd2:8610
+```
+
+The `grpc.host` must also use the container hostname (e.g., `pd0`) set via 
`HG_PD_GRPC_HOST`. Do not use `127.0.0.1` or `0.0.0.0` in bridge networking 
mode.
+
+See [docker/README.md](../../docker/README.md) for the full environment 
variable reference.
+
 ### PD Core Settings
 
 Controls PD-specific behavior.
@@ -726,7 +751,7 @@ pd_partition_count 36.0
 
 ### Pre-Deployment Checklist
 
-- [ ] `grpc.host` set to actual IP address (not `127.0.0.1`)
+- [ ] `grpc.host` set to actual IP address or container hostname (not 
`127.0.0.1`). For Docker bridge networking use container hostname via 
`HG_PD_GRPC_HOST` env var.
 - [ ] `raft.address` unique for each PD node
 - [ ] `raft.peers-list` identical on all PD nodes
 - [ ] `raft.peers-list` contains all PD node addresses
diff --git a/hugegraph-server/README.md b/hugegraph-server/README.md
index 597d41294..c145190bf 100644
--- a/hugegraph-server/README.md
+++ b/hugegraph-server/README.md
@@ -9,3 +9,24 @@ HugeGraph Server consists of two layers of functionality: the 
graph engine layer
 
 - Storage Layer:
   - Storage Backend: Supports multiple built-in storage backends 
(RocksDB/Memory/HStore/HBase/...) and allows users to extend custom backends 
without modifying the existing source code.
+
+## Docker
+
+### Standalone Mode
+
+```bash
+docker run -itd --name=hugegraph -p 8080:8080 hugegraph/hugegraph:1.7.0
+```
+
+> Use release tags (e.g., `1.7.0`) for stable deployments. The `latest` tag is 
intended for testing or development only.
+
+### Distributed Mode (PD + Store + Server)
+
+For a full distributed deployment, use the compose file in the `docker/` 
directory at the repository root:
+
+```bash
+cd docker
+HUGEGRAPH_VERSION=1.7.0 docker compose -f 
docker-compose-3pd-3store-3server.yml up -d
+```
+
+See [docker/README.md](../docker/README.md) for the full setup guide.
diff --git a/hugegraph-server/hugegraph-dist/docker/README.md 
b/hugegraph-server/hugegraph-dist/docker/README.md
index 454d4ca24..7ee88ab1f 100644
--- a/hugegraph-server/hugegraph-dist/docker/README.md
+++ b/hugegraph-server/hugegraph-dist/docker/README.md
@@ -1,52 +1,52 @@
-# Deploy Hugegraph server with docker
+# Deploy HugeGraph Server with Docker
 
 > Note:
 >
-> 1. The docker image of hugegraph is a convenience release, not official 
distribution artifacts from ASF. You can find more details from [ASF Release 
Distribution 
Policy](https://infra.apache.org/release-distribution.html#dockerhub).
+> 1. The HugeGraph Docker image is a convenience release, not an official ASF 
distribution artifact. See the [ASF Release Distribution 
Policy](https://infra.apache.org/release-distribution.html#dockerhub) for 
details.
 >
-> 2. Recommend to use `release tag` (like `1.5.0`/`1.7.0`) for the stable 
version. Use `latest` tag to experience the newest functions in development.
+> 2. Use release tags (for example, `1.7.0`) for stable deployments. Use 
`latest` only for development or testing.
 
 ## 1. Deploy
 
-We can use docker to quickly start an inner HugeGraph server with RocksDB in 
the background.
+Use Docker to quickly start a standalone HugeGraph Server with RocksDB.
 
-1. Using docker run
+1. Using `docker run`
 
-   Use `docker run -itd --name=graph -p 8080:8080 hugegraph/hugegraph:1.3.0` 
to start hugegraph server.
+   Use `docker run -itd --name=graph -p 8080:8080 hugegraph/hugegraph:1.7.0` 
to start hugegraph server.
 
-2. Using docker compose
+2. Using `docker compose`
 
-   Certainly we can only deploy server without other instance. Additionally, 
if we want to manage other HugeGraph-related instances with `server` in a 
single file, we can deploy HugeGraph-related instances via `docker-compose up 
-d`. The `docker-compose.yaml` is as below:
+   To deploy only the server, use `docker compose up -d`. The compose file is 
as follows:
 
     ```yaml
     version: '3'
     services:
       graph:
-        image: hugegraph/hugegraph:1.3.0
+        image: hugegraph/hugegraph:1.7.0
         ports:
           - 8080:8080
     ```
 
 ## 2. Create Sample Graph on Server Startup
 
-If you want to **preload** some (test) data or graphs in container(by 
default), you can set the env `PRELOAD=ture`
+To preload sample data on startup, set `PRELOAD=true`.
 
-If you want to customize the preloaded data, please mount the groovy scripts 
(not necessary).
+To customize the preload, mount your own Groovy script.
 
-1. Using docker run
+1. Using `docker run`
 
-   Use `docker run -itd --name=graph -p 8080:8080 -e PRELOAD=true -v 
/path/to/script:/hugegraph-server/scripts/example.groovy 
hugegraph/hugegraph:1.3.0`
+   Use `docker run -itd --name=graph -p 8080:8080 -e PRELOAD=true -v 
/path/to/script:/hugegraph-server/scripts/example.groovy 
hugegraph/hugegraph:1.7.0`
    to start hugegraph server.
 
-2. Using docker compose
+2. Using `docker compose`
 
-   We can also use `docker-compose up -d` to quickly start. The 
`docker-compose.yaml` is below. 
[example.groovy](https://github.com/apache/hugegraph/blob/master/hugegraph-server/hugegraph-dist/src/assembly/static/scripts/example.groovy)
 is a pre-defined script. If needed, we can mount a new `example.groovy` to 
preload different data:
+   Use `docker compose up -d` to start quickly. The compose file is below. 
[example.groovy](https://github.com/apache/hugegraph/blob/master/hugegraph-server/hugegraph-dist/src/assembly/static/scripts/example.groovy)
 is a predefined script. Replace it with your own script to preload different 
data:
 
     ```yaml
     version: '3'
     services:
       graph:
-        image: hugegraph/hugegraph:1.3.0
+        image: hugegraph/hugegraph:1.7.0
         environment:
           - PRELOAD=true
         volumes:
@@ -55,25 +55,25 @@ If you want to customize the preloaded data, please mount 
the groovy scripts (no
           - 8080:8080
     ```
 
-3. Using start-hugegraph.sh
+3. Using `start-hugegraph.sh`
 
-   If you deploy HugeGraph server without docker, you can also pass arguments 
using `-p`, like this: `bin/start-hugegraph.sh -p true`.
+   If you deploy HugeGraph Server without Docker, you can also pass `-p true` 
to `bin/start-hugegraph.sh`.
 
 ## 3. Enable Authentication
 
-1. Using docker run
+1. Using `docker run`
 
-   Use `docker run -itd --name=graph -p 8080:8080 -e AUTH=true -e PASSWORD=xxx 
hugegraph/hugegraph:1.3.0` to enable the authentication and set the password 
with `-e AUTH=true -e PASSWORD=xxx`.
+   Use `docker run -itd --name=graph -p 8080:8080 -e AUTH=true -e PASSWORD=xxx 
hugegraph/hugegraph:1.7.0` to enable authentication.
 
-2. Using docker compose
+2. Using `docker compose`
 
-   Similarly, we can set the environment variables in the docker-compose.yaml:
+   Set the environment variables in the compose file:
 
     ```yaml
     version: '3'
     services:
       server:
-        image: hugegraph/hugegraph:1.3.0
+        image: hugegraph/hugegraph:1.7.0
         container_name: graph
         ports:
           - 8080:8080
@@ -82,31 +82,31 @@ If you want to customize the preloaded data, please mount 
the groovy scripts (no
           - PASSWORD=xxx
     ```
 
-## 4. Running Open-Telemetry-Collector
+## 4. Run OpenTelemetry
 
 > CAUTION:
 >
-> The `docker-compose-trace.yaml` utilizes `Grafana` and `Grafana-Tempo`, both 
of them are licensed under 
[AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html), you should be aware 
of and use them with caution. Currently, we mainly provide this template for 
everyone to **test**
+> The `docker-compose-trace.yaml` uses Grafana and Grafana Tempo, both of 
which are licensed under 
[AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html). Use this template 
for testing only.
 >
 
-1. Start Open-Telemetry-Collector
+1. Start the OpenTelemetry collector
 
     ```bash
-    cd hugegraph-server/hugegraph-dist/docker/example
-    docker-compose -f docker-compose-trace.yaml -p hugegraph-trace up -d
+    # Run from the repository root
+    docker compose -f 
hugegraph-server/hugegraph-dist/docker/example/docker-compose-trace.yaml -p 
hugegraph-trace up -d
     ```
 
-2. Active Open-Telemetry-Agent
+2. Enable the OpenTelemetry agent
 
     ```bash
     ./start-hugegraph.sh -y true
     ```
 
-3. Stop Open-Telemetry-Collector
+3. Stop the OpenTelemetry collector
 
     ```bash
-    cd hugegraph-server/hugegraph-dist/docker/example
-    docker-compose -f docker-compose-trace.yaml -p hugegraph-trace stop
+    # Run from the repository root
+    docker compose -f 
hugegraph-server/hugegraph-dist/docker/example/docker-compose-trace.yaml -p 
hugegraph-trace stop
     ```
 
 4. References
@@ -114,3 +114,19 @@ If you want to customize the preloaded data, please mount 
the groovy scripts (no
     - [What is 
OpenTelemetry](https://opentelemetry.io/docs/what-is-opentelemetry/)
 
     - [Tempo in 
Grafana](https://grafana.com/docs/tempo/latest/getting-started/tempo-in-grafana/)
+
+## 5. Distributed Cluster (PD + Store + Server)
+
+For a full distributed HugeGraph cluster with PD, Store, and Server, use the
+3-node compose file in the `docker/` directory at the repository root.
+
+**Prerequisites**: Allocate at least **12 GB** memory to Docker Desktop
+(Settings → Resources → Memory). The cluster runs 9 JVM processes.
+
+```bash
+cd docker
+HUGEGRAPH_VERSION=1.7.0 docker compose -f 
docker-compose-3pd-3store-3server.yml up -d
+```
+
+See [docker/README.md](../../../docker/README.md) for the full setup guide,
+environment variable reference, and troubleshooting.
diff --git a/hugegraph-store/AGENTS.md b/hugegraph-store/AGENTS.md
index 97efa22fd..8b5ef46ba 100644
--- a/hugegraph-store/AGENTS.md
+++ b/hugegraph-store/AGENTS.md
@@ -129,7 +129,7 @@ bin/restart-hugegraph-store.sh
 2. HugeGraph Store cluster (3+ nodes)
 3. Proper configuration pointing Store nodes to PD cluster
 
-See Docker Compose example: `hugegraph-server/hugegraph-dist/docker/example/`
+See Docker Compose examples in the repository root `../docker/` directory. 
Single-node quickstart (pre-built images): `../docker/docker-compose.yml`. 
Single-node dev build (from source): `../docker/docker-compose.dev.yml`. 3-node 
cluster: `../docker/docker-compose-3pd-3store-3server.yml`. See 
`../docker/README.md` for the full setup guide.
 
 ## Configuration Files
 
diff --git a/hugegraph-store/README.md b/hugegraph-store/README.md
index 10f6e6158..223517525 100644
--- a/hugegraph-store/README.md
+++ b/hugegraph-store/README.md
@@ -348,7 +348,7 @@ For development workflows and debugging, see [Development 
Guide](docs/developmen
 From the project root:
 
 ```bash
-docker build -f hugegraph-store/Dockerfile -t hugegraph-store:latest .
+docker build -f hugegraph-store/Dockerfile -t hugegraph/store:latest .
 ```
 
 ### Run Container
@@ -358,11 +358,12 @@ docker run -d \
   -p 8520:8520 \
   -p 8500:8500 \
   -p 8510:8510 \
-  -v /path/to/conf:/hugegraph-store/conf \
+  -e HG_STORE_PD_ADDRESS=<pd-ip>:8686 \
+  -e HG_STORE_GRPC_HOST=<your-ip> \
+  -e HG_STORE_RAFT_ADDRESS=<your-ip>:8510 \
   -v /path/to/storage:/hugegraph-store/storage \
-  -e PD_ADDRESS=192.168.1.10:8686,192.168.1.11:8686 \
   --name hugegraph-store \
-  hugegraph-store:latest
+  hugegraph/store:latest
 ```
 
 **Exposed Ports**:
@@ -375,9 +376,11 @@ docker run -d \
 For a complete HugeGraph distributed deployment (PD + Store + Server), see:
 
 ```
-hugegraph-server/hugegraph-dist/docker/example/
+docker/docker-compose-3pd-3store-3server.yml
 ```
 
+See [docker/README.md](../docker/README.md) for the full setup guide.
+
 For Docker and Kubernetes deployment details, see [Deployment 
Guide](docs/deployment-guide.md).
 
 ---
diff --git a/hugegraph-store/docs/deployment-guide.md 
b/hugegraph-store/docs/deployment-guide.md
index e92e99171..de07904d6 100644
--- a/hugegraph-store/docs/deployment-guide.md
+++ b/hugegraph-store/docs/deployment-guide.md
@@ -672,163 +672,73 @@ curl http://localhost:8080/versions
 
 ### Docker Compose: Complete Cluster
 
-File: `docker-compose.yml`
+For a production-like 3-node distributed deployment, use the compose file at 
`docker/docker-compose-3pd-3store-3server.yml` in the repository root. See 
[docker/README.md](../../docker/README.md) for the full setup guide.
+
+> **Prerequisites**: Allocate at least **12 GB** memory to Docker Desktop 
(Settings → Resources → Memory). The cluster runs 9 JVM processes.
+
+```bash
+cd docker
+HUGEGRAPH_VERSION=1.7.0 docker compose -f 
docker-compose-3pd-3store-3server.yml up -d
+```
+
+The compose file uses a Docker bridge network (`hg-net`) with container 
hostnames for service discovery. Configuration is injected via environment 
variables using the `HG_*` prefix:
+
+**PD environment variables** (per node):
+
+```yaml
+environment:
+  HG_PD_GRPC_HOST: pd0                                # maps to grpc.host
+  HG_PD_GRPC_PORT: "8686"                             # maps to grpc.port
+  HG_PD_REST_PORT: "8620"                             # maps to server.port
+  HG_PD_RAFT_ADDRESS: pd0:8610                        # maps to raft.address
+  HG_PD_RAFT_PEERS_LIST: pd0:8610,pd1:8610,pd2:8610   # maps to raft.peers-list
+  HG_PD_INITIAL_STORE_LIST: store0:8500,store1:8500,store2:8500  # maps to 
pd.initial-store-list
+  HG_PD_DATA_PATH: /hugegraph-pd/pd_data              # maps to pd.data-path
+  HG_PD_INITIAL_STORE_COUNT: 3                         # maps to 
pd.initial-store-count
+```
+
+**Store environment variables** (per node):
+
+```yaml
+environment:
+  HG_STORE_PD_ADDRESS: pd0:8686,pd1:8686,pd2:8686     # maps to 
pdserver.address
+  HG_STORE_GRPC_HOST: store0                           # maps to grpc.host
+  HG_STORE_GRPC_PORT: "8500"                           # maps to grpc.port
+  HG_STORE_REST_PORT: "8520"                           # maps to server.port
+  HG_STORE_RAFT_ADDRESS: store0:8510                   # maps to raft.address
+  HG_STORE_DATA_PATH: /hugegraph-store/storage         # maps to app.data-path
+```
+
+**Server environment variables**:
 
 ```yaml
-version: '3.8'
-
-services:
-  # PD Cluster (3 nodes)
-  pd1:
-    image: hugegraph/hugegraph-pd:1.7.0
-    container_name: hugegraph-pd1
-    ports:
-      - "8686:8686"
-      - "8620:8620"
-      - "8610:8610"
-    environment:
-      - GRPC_HOST=pd1
-      - RAFT_ADDRESS=pd1:8610
-      - RAFT_PEERS=pd1:8610,pd2:8610,pd3:8610
-    networks:
-      - hugegraph-net
-
-  pd2:
-    image: hugegraph/hugegraph-pd:1.7.0
-    container_name: hugegraph-pd2
-    ports:
-      - "8687:8686"
-    environment:
-      - GRPC_HOST=pd2
-      - RAFT_ADDRESS=pd2:8610
-      - RAFT_PEERS=pd1:8610,pd2:8610,pd3:8610
-    networks:
-      - hugegraph-net
-
-  pd3:
-    image: hugegraph/hugegraph-pd:1.7.0
-    container_name: hugegraph-pd3
-    ports:
-      - "8688:8686"
-    environment:
-      - GRPC_HOST=pd3
-      - RAFT_ADDRESS=pd3:8610
-      - RAFT_PEERS=pd1:8610,pd2:8610,pd3:8610
-    networks:
-      - hugegraph-net
-
-  # Store Cluster (3 nodes)
-  store1:
-    image: hugegraph/hugegraph-store:1.7.0
-    container_name: hugegraph-store1
-    ports:
-      - "8500:8500"
-      - "8510:8510"
-      - "8520:8520"
-    environment:
-      - PD_ADDRESS=pd1:8686,pd2:8686,pd3:8686
-      - GRPC_HOST=store1
-      - RAFT_ADDRESS=store1:8510
-    volumes:
-      - store1-data:/hugegraph-store/storage
-    depends_on:
-      - pd1
-      - pd2
-      - pd3
-    networks:
-      - hugegraph-net
-
-  store2:
-    image: hugegraph/hugegraph-store:1.7.0
-    container_name: hugegraph-store2
-    ports:
-      - "8501:8500"
-    environment:
-      - PD_ADDRESS=pd1:8686,pd2:8686,pd3:8686
-      - GRPC_HOST=store2
-      - RAFT_ADDRESS=store2:8510
-    volumes:
-      - store2-data:/hugegraph-store/storage
-    depends_on:
-      - pd1
-      - pd2
-      - pd3
-    networks:
-      - hugegraph-net
-
-  store3:
-    image: hugegraph/hugegraph-store:1.7.0
-    container_name: hugegraph-store3
-    ports:
-      - "8502:8500"
-    environment:
-      - PD_ADDRESS=pd1:8686,pd2:8686,pd3:8686
-      - GRPC_HOST=store3
-      - RAFT_ADDRESS=store3:8510
-    volumes:
-      - store3-data:/hugegraph-store/storage
-    depends_on:
-      - pd1
-      - pd2
-      - pd3
-    networks:
-      - hugegraph-net
-
-  # Server (2 nodes)
-  server1:
-    image: hugegraph/hugegraph:1.7.0
-    container_name: hugegraph-server1
-    ports:
-      - "8080:8080"
-    environment:
-      - BACKEND=hstore
-      - PD_PEERS=pd1:8686,pd2:8686,pd3:8686
-    depends_on:
-      - store1
-      - store2
-      - store3
-    networks:
-      - hugegraph-net
-
-  server2:
-    image: hugegraph/hugegraph:1.7.0
-    container_name: hugegraph-server2
-    ports:
-      - "8081:8080"
-    environment:
-      - BACKEND=hstore
-      - PD_PEERS=pd1:8686,pd2:8686,pd3:8686
-    depends_on:
-      - store1
-      - store2
-      - store3
-    networks:
-      - hugegraph-net
-
-networks:
-  hugegraph-net:
-    driver: bridge
-
-volumes:
-  store1-data:
-  store2-data:
-  store3-data:
+environment:
+  HG_SERVER_BACKEND: hstore                            # maps to backend
+  HG_SERVER_PD_PEERS: pd0:8686,pd1:8686,pd2:8686      # maps to pd.peers
+  STORE_REST: store0:8520                              # used by 
wait-partition.sh
 ```
 
+**Startup ordering** is enforced via `depends_on` with `condition: 
service_healthy`:
+1. PD nodes start first and must pass healthchecks (`/v1/health`)
+2. Store nodes start after all PD nodes are healthy
+3. Server nodes start after all Store nodes are healthy
+
+> **Note**: The deprecated env var names (`GRPC_HOST`, `RAFT_ADDRESS`, 
`RAFT_PEERS`, `PD_ADDRESS`, `BACKEND`, `PD_PEERS`) still work but log a 
warning. Use the `HG_*` prefixed names for new deployments.
+
 **Deploy**:
 
 ```bash
-# Start cluster
-docker-compose up -d
+# Start cluster (run from the docker/ directory)
+HUGEGRAPH_VERSION=1.7.0 docker compose -f 
docker-compose-3pd-3store-3server.yml up -d
 
 # Check status
-docker-compose ps
+docker ps
 
 # View logs
-docker-compose logs -f store1
+docker logs hg-store0
 
 # Stop cluster
-docker-compose down
+docker compose -f docker-compose-3pd-3store-3server.yml down
 ```
 
 ---
@@ -876,7 +786,7 @@ spec:
     spec:
       containers:
       - name: store
-        image: hugegraph/hugegraph-store:1.7.0
+        image: hugegraph/store:1.7.0
         ports:
         - containerPort: 8500
           name: grpc
@@ -889,11 +799,11 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
-        - name: PD_ADDRESS
+        - name: HG_STORE_PD_ADDRESS
           value: 
"hugegraph-pd-0.hugegraph-pd:8686,hugegraph-pd-1.hugegraph-pd:8686,hugegraph-pd-2.hugegraph-pd:8686"
-        - name: GRPC_HOST
+        - name: HG_STORE_GRPC_HOST
           value: "$(POD_NAME).hugegraph-store"
-        - name: RAFT_ADDRESS
+        - name: HG_STORE_RAFT_ADDRESS
           value: "$(POD_NAME).hugegraph-store:8510"
         volumeMounts:
         - name: data


Reply via email to