# Docker Compose for SeaweedFS S3 IAM Integration Tests version: '3.8' services: # SeaweedFS Master seaweedfs-master: image: chrislusf/seaweedfs:latest container_name: seaweedfs-master-test command: master -mdir=/data -defaultReplication=000 -port=9333 ports: - "9333:9333" volumes: - master-data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9333/cluster/status"] interval: 10s timeout: 5s retries: 5 networks: - seaweedfs-test # SeaweedFS Volume seaweedfs-volume: image: chrislusf/seaweedfs:latest container_name: seaweedfs-volume-test command: volume -dir=/data -port=8083 -mserver=seaweedfs-master:9333 ports: - "8083:8083" volumes: - volume-data:/data depends_on: seaweedfs-master: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8083/status"] interval: 10s timeout: 5s retries: 5 networks: - seaweedfs-test # SeaweedFS Filer seaweedfs-filer: image: chrislusf/seaweedfs:latest container_name: seaweedfs-filer-test command: filer -port=8888 -master=seaweedfs-master:9333 -defaultStoreDir=/data ports: - "8888:8888" volumes: - filer-data:/data depends_on: seaweedfs-master: condition: service_healthy seaweedfs-volume: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8888/status"] interval: 10s timeout: 5s retries: 5 networks: - seaweedfs-test # SeaweedFS S3 API seaweedfs-s3: image: chrislusf/seaweedfs:latest container_name: seaweedfs-s3-test command: s3 -port=8333 -filer=seaweedfs-filer:8888 -config=/config/test_config.json ports: - "8333:8333" volumes: - ./test_config.json:/config/test_config.json:ro depends_on: seaweedfs-filer: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8333/"] interval: 10s timeout: 5s retries: 5 networks: - seaweedfs-test # Test Runner integration-tests: build: context: ../../../ dockerfile: test/s3/iam/Dockerfile.s3 container_name: seaweedfs-s3-iam-tests environment: - WEED_BINARY=weed - S3_PORT=8333 - FILER_PORT=8888 - MASTER_PORT=9333 - VOLUME_PORT=8083 - TEST_TIMEOUT=30m - LOG_LEVEL=2 depends_on: seaweedfs-s3: condition: service_healthy volumes: - .:/app/test/s3/iam - test-results:/app/test-results networks: - seaweedfs-test command: ["make", "test"] # Optional: Mock LDAP Server for LDAP testing ldap-server: image: osixia/openldap:1.5.0 container_name: ldap-server-test environment: LDAP_ORGANISATION: "Example Corp" LDAP_DOMAIN: "example.com" LDAP_ADMIN_PASSWORD: "admin-password" LDAP_CONFIG_PASSWORD: "config-password" LDAP_READONLY_USER: "true" LDAP_READONLY_USER_USERNAME: "readonly" LDAP_READONLY_USER_PASSWORD: "readonly-password" ports: - "389:389" - "636:636" volumes: - ldap-data:/var/lib/ldap - ldap-config:/etc/ldap/slapd.d networks: - seaweedfs-test # Optional: LDAP Admin UI ldap-admin: image: osixia/phpldapadmin:latest container_name: ldap-admin-test environment: PHPLDAPADMIN_LDAP_HOSTS: "ldap-server" PHPLDAPADMIN_HTTPS: "false" ports: - "8080:80" depends_on: - ldap-server networks: - seaweedfs-test volumes: master-data: driver: local volume-data: driver: local filer-data: driver: local ldap-data: driver: local ldap-config: driver: local test-results: driver: local networks: seaweedfs-test: driver: bridge ipam: config: - subnet: 172.20.0.0/16