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.
		
		
		
		
		
			
		
			
				
					
					
						
							138 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							138 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
							 | 
						|
								    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
							 | 
						|
								      - -webdav=false
							 | 
						|
								      - -s3.allowEmptyFolder=false
							 | 
						|
								      - -mq.broker=true
							 | 
						|
								      - -mq.agent=true
							 | 
						|
								      - -ip=seaweedfs
							 | 
						|
								    networks:
							 | 
						|
								      - seaweedfs-net
							 | 
						|
								    healthcheck:
							 | 
						|
								      test: ["CMD", "curl", "--fail", "--silent", "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
							 |