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
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
|