diff options
Diffstat (limited to 'test/s3/iam/docker-compose.yml')
| -rw-r--r-- | test/s3/iam/docker-compose.yml | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/test/s3/iam/docker-compose.yml b/test/s3/iam/docker-compose.yml new file mode 100644 index 000000000..9e9c00f6d --- /dev/null +++ b/test/s3/iam/docker-compose.yml @@ -0,0 +1,162 @@ +version: '3.8' + +services: + # Keycloak Identity Provider + keycloak: + image: quay.io/keycloak/keycloak:26.0.7 + container_name: keycloak-iam-test + hostname: keycloak + environment: + KC_BOOTSTRAP_ADMIN_USERNAME: admin + KC_BOOTSTRAP_ADMIN_PASSWORD: admin + KC_HTTP_ENABLED: "true" + KC_HOSTNAME_STRICT: "false" + KC_HOSTNAME_STRICT_HTTPS: "false" + KC_HTTP_RELATIVE_PATH: / + ports: + - "8080:8080" + command: start-dev + networks: + - seaweedfs-iam + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health/ready"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 60s + + # SeaweedFS Master + weed-master: + image: ${SEAWEEDFS_IMAGE:-local/seaweedfs:latest} + container_name: weed-master + hostname: weed-master + ports: + - "9333:9333" + - "19333:19333" + command: "master -ip=weed-master -port=9333 -mdir=/data" + volumes: + - master-data:/data + networks: + - seaweedfs-iam + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:9333/cluster/status"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 10s + + # SeaweedFS Volume Server + weed-volume: + image: ${SEAWEEDFS_IMAGE:-local/seaweedfs:latest} + container_name: weed-volume + hostname: weed-volume + ports: + - "8083:8083" + - "18083:18083" + command: "volume -ip=weed-volume -port=8083 -dir=/data -mserver=weed-master:9333 -dataCenter=dc1 -rack=rack1" + volumes: + - volume-data:/data + networks: + - seaweedfs-iam + depends_on: + weed-master: + condition: service_healthy + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:8083/status"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 10s + + # SeaweedFS Filer + weed-filer: + image: ${SEAWEEDFS_IMAGE:-local/seaweedfs:latest} + container_name: weed-filer + hostname: weed-filer + ports: + - "8888:8888" + - "18888:18888" + command: "filer -ip=weed-filer -port=8888 -master=weed-master:9333 -defaultStoreDir=/data" + volumes: + - filer-data:/data + networks: + - seaweedfs-iam + depends_on: + weed-master: + condition: service_healthy + weed-volume: + condition: service_healthy + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:8888/status"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 10s + + # SeaweedFS S3 API with IAM + weed-s3: + image: ${SEAWEEDFS_IMAGE:-local/seaweedfs:latest} + container_name: weed-s3 + hostname: weed-s3 + ports: + - "8333:8333" + environment: + WEED_FILER: "weed-filer:8888" + WEED_IAM_CONFIG: "/config/iam_config.json" + WEED_S3_CONFIG: "/config/test_config.json" + GLOG_v: "3" + command: > + sh -c " + echo 'Starting S3 API with IAM...' && + weed -v=3 s3 -ip=weed-s3 -port=8333 + -filer=weed-filer:8888 + -config=/config/test_config.json + -iam.config=/config/iam_config.json + " + volumes: + - ./iam_config.json:/config/iam_config.json:ro + - ./test_config.json:/config/test_config.json:ro + networks: + - seaweedfs-iam + depends_on: + weed-filer: + condition: service_healthy + keycloak: + condition: service_healthy + keycloak-setup: + condition: service_completed_successfully + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:8333"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + + # Keycloak Setup Service + keycloak-setup: + image: alpine/curl:8.4.0 + container_name: keycloak-setup + volumes: + - ./setup_keycloak_docker.sh:/setup.sh:ro + - .:/workspace:rw + working_dir: /workspace + networks: + - seaweedfs-iam + depends_on: + keycloak: + condition: service_healthy + command: > + sh -c " + apk add --no-cache bash jq && + chmod +x /setup.sh && + /setup.sh + " + +volumes: + master-data: + volume-data: + filer-data: + +networks: + seaweedfs-iam: + driver: bridge |
