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.
 
 
 
 
 
 

162 lines
4.1 KiB

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