Newer
Older
EnvoyControlPlane / docker-compose.yml
version: "3.9"

services:
  # 1. The Envoy Control Plane (Your existing service)
  envoy-control-plane:
    user: "1026:100"
    image: docker.jerxie.com/xds-server:latest
    container_name: envoy-control-plane
    restart: unless-stopped
    ports:
      # Exposes the gRPC XDS service port (18000) for the Envoy proxy to connect to
      - "8090:8080"
      # --- REMOVED: The 18000:18000 mapping is removed as it's only for internal sidecar use. ---
      # - "18000:18000"
    volumes:
      - /volume1/docker/envoy-control-plane/data:/app/data:rw
    command: ["--node-id", "home", "--config-dir", "/app/data/config","--db","file:/app/data/data.db?_foreign_keys=on", "--enable-cert-issuance", "webroot-path=/app/data/acme"]
    # Add a network to ensure both services can communicate
    networks:
      - envoy_network


  # 2. The Envoy Proxy (New service)
  envoy-proxy:
    user: "1026:100"
    # Use the official Envoy Docker image
    image: envoyproxy/envoy:v1.27.0 # Use a specific, stable version
    container_name: envoy-proxy
    restart: unless-stopped
    # Expose a port where the proxy will listen for client traffic (e.g., 9901 for admin, 10000 for listener)
    ports:
      - "10000:10000"
      - "10001:10001"
      - "11111:11111"
    volumes:
      - /volume1/docker/envoy-control-plane/data/envoy_config:/etc/config:rw
    # The starting command you provided
    command: 
      - "envoy"
      - "-c"
      - "/etc/config/envoy.yaml"
    # Ensure this service waits for the control plane to be up
    depends_on:
      - envoy-control-plane
    # Connect to the same network as the control plane
    networks:
      - envoy_network
    
# Define the volumes used by the services
# Corrected volume definition
#volumes:
#  data_volume:
#    driver: local
#    driver_opts:
#      type: "nfs"
#      # Keep standard NFS mount options here (addr, rw, nfsvers=4)
#      o: "addr=192.168.68.90,rw,nfsvers=4"
#      # Specify the remote path
#      device: ":/volume1/docker/envoy-control-plane/data"
#      # Define ownership options separately (optional, but often helps)
#      uid: "1026"
#      gid: "100"

# Define a custom network for inter-service communication
networks:
  envoy_network:
    driver: bridge