You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

139 lines
3.5 KiB

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