version: "3.9" services: minio: image: minio/minio:RELEASE.2025-02-28T09-55-16Z command: ["server", "/data", "--console-address", ":9001"] environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin volumes: - minio_data:/data networks: - internal deploy: replicas: 1 minio-init: image: minio/mc:RELEASE.2025-02-21T16-00-46Z networks: - internal command: - /bin/sh - -c - | set -euo pipefail mc alias set local http://minio:9000 minioadmin minioadmin mc mb -p local/cloudlysis-docs || true mc anonymous set download local/cloudlysis-docs || true echo "minio init done" deploy: replicas: 1 restart_policy: condition: none control-api: image: ${IMAGE_PREFIX:-cloudlysis}/control-api:${IMAGE_TAG:-dev} environment: CONTROL_API_ADDR: "0.0.0.0:8080" CONTROL_PLACEMENT_PATH: "/etc/control/placement.json" CONTROL_SWARM_STATE_PATH: "/etc/control/swarm_state.json" CONTROL_SELF_URL: "http://control-api:8080" CONTROL_S3_ENDPOINT: "${CONTROL_S3_ENDPOINT:-http://minio:9000}" CONTROL_S3_PUBLIC_ENDPOINT: "${CONTROL_S3_PUBLIC_ENDPOINT:-}" CONTROL_S3_REGION: "${CONTROL_S3_REGION:-us-east-1}" CONTROL_S3_ACCESS_KEY_ID_FILE: "/run/secrets/control_s3_access_key_id" CONTROL_S3_SECRET_ACCESS_KEY_FILE: "/run/secrets/control_s3_secret_access_key" CONTROL_S3_FORCE_PATH_STYLE: "${CONTROL_S3_FORCE_PATH_STYLE:-true}" CONTROL_S3_INSECURE: "${CONTROL_S3_INSECURE:-true}" CONTROL_S3_BUCKET_DOCS: "${CONTROL_S3_BUCKET_DOCS:-cloudlysis-docs}" CONTROL_S3_PREFIX_DOCS: "${CONTROL_S3_PREFIX_DOCS:-docs/}" secrets: - control_s3_access_key_id - control_s3_secret_access_key configs: - source: control_placement_dev target: /etc/control/placement.json - source: control_swarm_state_dev target: /etc/control/swarm_state.json networks: - internal ports: - target: 8080 published: 8080 protocol: tcp mode: ingress deploy: replicas: 1 restart_policy: condition: on-failure control-ui: image: ${IMAGE_PREFIX:-cloudlysis}/control-ui:${IMAGE_TAG:-dev} environment: VITE_CONTROL_API_URL: "http://control-api:8080" networks: - public - internal ports: - target: 80 published: 8081 protocol: tcp mode: ingress deploy: replicas: 1 restart_policy: condition: on-failure configs: control_placement_dev: file: ../../config/placement/dev.json control_swarm_state_dev: file: ../../swarm/dev.json secrets: control_s3_access_key_id: external: true control_s3_secret_access_key: external: true networks: public: driver: overlay internal: driver: overlay volumes: minio_data: