| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- services:
- # SeaweedFS All-in-One Server (Custom Build with PostgreSQL support)
- seaweedfs:
- build:
- context: ../.. # Build from project root
- dockerfile: test/postgres/Dockerfile.seaweedfs
- container_name: seaweedfs-server
- ports:
- - "9333:9333" # Master port
- - "8888:8888" # Filer port
- - "8333:8333" # S3 port
- - "8085:8085" # Volume port
- - "9533:9533" # Metrics port
- - "26777:16777" # MQ Agent port (mapped to avoid conflicts)
- - "27777:17777" # MQ Broker port (mapped to avoid conflicts)
- volumes:
- - seaweedfs_data:/data
- - ./config:/etc/seaweedfs
- command: >
- ./weed server
- -dir=/data
- -master.volumeSizeLimitMB=50
- -master.port=9333
- -metricsPort=9533
- -volume.max=0
- -volume.port=8085
- -volume.preStopSeconds=1
- -filer=true
- -filer.port=8888
- -s3=true
- -s3.port=8333
- -s3.config=/etc/seaweedfs/s3config.json
- -webdav=false
- -s3.allowEmptyFolder=false
- -mq.broker=true
- -mq.agent=true
- -ip=seaweedfs
- networks:
- - seaweedfs-net
- healthcheck:
- test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://seaweedfs:9333/cluster/status"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 60s
- # Database Server (PostgreSQL Wire Protocol Compatible)
- postgres-server:
- build:
- context: ../.. # Build from project root
- dockerfile: test/postgres/Dockerfile.seaweedfs
- container_name: postgres-server
- ports:
- - "5432:5432" # PostgreSQL port
- depends_on:
- seaweedfs:
- condition: service_healthy
- command: >
- ./weed db
- -host=0.0.0.0
- -port=5432
- -master=seaweedfs:9333
- -auth=trust
- -database=default
- -max-connections=50
- -idle-timeout=30m
- networks:
- - seaweedfs-net
- healthcheck:
- test: ["CMD", "nc", "-z", "localhost", "5432"]
- interval: 5s
- timeout: 3s
- retries: 3
- start_period: 10s
- # MQ Data Producer - Creates test topics and data
- mq-producer:
- build:
- context: ../.. # Build from project root
- dockerfile: test/postgres/Dockerfile.producer
- container_name: mq-producer
- depends_on:
- seaweedfs:
- condition: service_healthy
- environment:
- - SEAWEEDFS_MASTER=seaweedfs:9333
- - SEAWEEDFS_FILER=seaweedfs:8888
- networks:
- - seaweedfs-net
- restart: "no" # Run once to create data
- # PostgreSQL Test Client
- postgres-client:
- build:
- context: ../.. # Build from project root
- dockerfile: test/postgres/Dockerfile.client
- container_name: postgres-client
- depends_on:
- postgres-server:
- condition: service_healthy
- environment:
- - POSTGRES_HOST=postgres-server
- - POSTGRES_PORT=5432
- - POSTGRES_USER=seaweedfs
- - POSTGRES_DB=logs
- networks:
- - seaweedfs-net
- profiles:
- - client # Only start when explicitly requested
- # PostgreSQL CLI for manual testing
- psql-cli:
- image: postgres:15-alpine
- container_name: psql-cli
- depends_on:
- postgres-server:
- condition: service_healthy
- environment:
- - PGHOST=postgres-server
- - PGPORT=5432
- - PGUSER=seaweedfs
- - PGDATABASE=default
- networks:
- - seaweedfs-net
- profiles:
- - cli # Only start when explicitly requested
- command: >
- sh -c "
- echo 'Connecting to PostgreSQL server...';
- psql -c 'SELECT version();'
- "
- volumes:
- seaweedfs_data:
- driver: local
- networks:
- seaweedfs-net:
- driver: bridge
|