version: '3.9' volumes: mysql: driver: local minio: driver: local vault: driver: local services: loki: image: grafana/loki:latest ports: - "3100:3100" networks: hub: healthcheck: test: wget --quiet --tries=1 --output-document=- http://localhost:3100/ready | grep -q -w ready || exit 1 start_period: 20s interval: 3s timeout: 5s retries: 5 volumes: - './loki-config.yaml:/loki-config.yaml' command: --config.file=/loki-config.yaml grafana: image: grafana/grafana:latest environment: - GF_SECURITY_ADMIN_PASSWORD=admin networks: hub: depends_on: - loki mysql: image: mysql:latest container_name: mysql restart: always healthcheck: test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ] interval: 3s timeout: 5s retries: 5 environment: MYSQL_ROOT_HOST: "%" MYSQL_ROOT_PASSWORD: start123 volumes: - mysql:/var/lib/mysql networks: hub: redis: image: bitnamilegacy/redis:8.2.1-debian-12-r0 healthcheck: test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] interval: 3s timeout: 5s retries: 5 environment: ALLOW_EMPTY_PASSWORD: yes networks: hub: minio: image: minio/minio:latest healthcheck: test: bash -c ':> /dev/tcp/127.0.0.1/9000' || exit 1 interval: 3s timeout: 5s retries: 5 volumes: - minio:/data environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: start123 command: server /data networks: hub: mq: image: rabbitmq:3-management hostname: mq healthcheck: test: rabbitmq-diagnostics -q ping interval: 3s timeout: 5s retries: 5 ports: - '5672:5672' environment: RABBITMQ_DEFAULT_USER: root RABBITMQ_DEFAULT_PASS: start123 networks: hub: vault: image: hashicorp/vault pull_policy: always healthcheck: test: [ "CMD", "wget", "--spider", "--proxy", "off", "http://127.0.0.1:8090/v1/sys/health?standbyok=true" ] interval: 10s timeout: 3s retries: 10 start_period: 5s volumes: - vault:/vault environment: SKIP_SETCAP: true VAULT_DEV_ROOT_TOKEN_ID: start123 VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8090 networks: hub: nginx: #image: nginxproxy/nginx-proxy:alpine image: nginx:latest depends_on: authup: condition: service_healthy core: condition: service_healthy storage: condition: service_healthy messenger: condition: service_healthy ports: - '3000:3000' volumes: - './nginx.conf:/etc/nginx/nginx.conf' - '/var/run/docker.sock:/tmp/docker.sock:ro' networks: hub: authup: image: authup/authup pull_policy: always restart: always depends_on: mysql: condition: service_healthy redis: condition: service_healthy vault: condition: service_healthy environment: DB_TYPE: 'mysql' DB_HOST: 'mysql' DB_USERNAME: 'root' DB_PASSWORD: 'start123' DB_DATABASE: 'auth' VAULT: start123@http://vault:8090/v1/ REDIS: redis://redis PUBLIC_URL: ${AUTHUP_PUBLIC_URL:-http://localhost:3000/auth/} COOKIE_DOMAIN: ${COOKIE_DOMAIN:-localhost} AUTHORIZE_REDIRECT_URL: ${PUBLIC_URL:-http://localhost:3000/} ROBOT_ADMIN_ENABLED: true networks: hub: core: build: '.' restart: always command: core cli start depends_on: authup: condition: service_healthy mq: condition: service_healthy mysql: condition: service_healthy redis: condition: service_healthy vault: condition: service_healthy loki: condition: service_healthy environment: REDIS_CONNECTION_STRING: redis://redis VAULT_CONNECTION_STRING: start123@http://vault:8090/v1/ RABBITMQ_CONNECTION_STRING: ${MQ_CONNECTION_URL:-amqp://root:start123@172.40.1.1} PUBLIC_URL: ${CORE_PUBLIC_URL:-http://localhost:3000/core/} HARBOR_URL: ${HARBOR_URL:-} AUTHUP_URL: http://authup:3000/ TELEMETRY_URL: http://telemetry:3000/ DB_TYPE: 'mysql' DB_HOST: 'mysql' DB_USERNAME: 'root' DB_PASSWORD: 'start123' DB_DATABASE: 'core' SKIP_PROJECT_APPROVAL: true SKIP_ANALYSIS_APPROVAL: true MASTER_IMAGES_BRANCH: ${MASTER_IMAGES_BRANCH:-master} networks: hub: messenger: build: '.' restart: always command: messenger start depends_on: authup: condition: service_healthy redis: condition: service_healthy vault: condition: service_healthy environment: REDIS_CONNECTION_STRING: redis://redis VAULT_CONNECTION_STRING: start123@http://vault:8090/v1/ AUTHUP_URL: http://authup:3000/ networks: hub: core-worker: build: '.' restart: always command: core-worker start depends_on: authup: condition: service_healthy mq: condition: service_healthy vault: condition: service_healthy volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" environment: RABBITMQ_CONNECTION_STRING: ${MQ_CONNECTION_URL:-amqp://root:start123@172.40.1.1} VAULT_CONNECTION_STRING: start123@http://vault:8090/v1/ AUTHUP_URL: http://authup:3000/ CORE_URL: http://core:3000/ STORAGE_URL: http://storage:3000/ networks: hub: storage: build: '.' restart: always command: storage start depends_on: authup: condition: service_healthy redis: condition: service_healthy minio: condition: service_healthy vault: condition: service_healthy environment: DB_TYPE: 'mysql' DB_HOST: 'mysql' DB_USERNAME: 'root' DB_PASSWORD: 'start123' DB_DATABASE: 'storage' PUBLIC_URL: ${STORAGE_PUBLIC_URL:-http://localhost:3000/storage/} REDIS_CONNECTION_STRING: redis://redis MINIO_CONNECTION_STRING: http://admin:start123@minio:9000 VAULT_CONNECTION_STRING: start123@http://vault:8090/v1/ AUTHUP_URL: http://authup:3000/ networks: hub: telemetry: build: '.' restart: always command: telemetry cli start depends_on: authup: condition: service_healthy redis: condition: service_healthy vault: condition: service_healthy environment: DB_TYPE: 'mysql' DB_HOST: 'mysql' DB_USERNAME: 'root' DB_PASSWORD: 'start123' DB_DATABASE: 'telemetry' PUBLIC_URL: ${STORAGE_PUBLIC_URL:-http://localhost:3000/telemetry/} RABBITMQ_CONNECTION_STRING: ${MQ_CONNECTION_URL:-amqp://root:start123@172.40.1.1} REDIS_CONNECTION_STRING: redis://redis VAULT_CONNECTION_STRING: start123@http://vault:8090/v1/ AUTHUP_URL: http://authup:3000/ LOKI_URL: http://loki:3100/ networks: hub: ui: build: '.' restart: always command: ui start depends_on: authup: condition: service_healthy core: condition: service_healthy storage: condition: service_healthy environment: NUXT_AUTHUP_URL: http://authup:3000/ NUXT_PUBLIC_AUTHUP_URL: ${AUTHUP_PUBLIC_URL:-http://localhost:3000/auth/} NUXT_CORE_URL: http://core:3000/ NUXT_PUBLIC_CORE_URL: ${CORE_PUBLIC_URL:-http://localhost:3000/core/} NUXT_STORAGE_URL: http://storage:3000/ NUXT_PUBLIC_STORAGE_URL: ${STORAGE_PUBLIC_URL:-http://localhost:3000/storage/} NUXT_TELEMETRY_URL: http://telemetry:3000/ NUXT_PUBLIC_TELEMETRY_URL: ${TELEMETRY_PUBLIC_URL:-http://localhost:3000/telemetry/} NUXT_PUBLIC_COOKIE_DOMAIN: ${COOKIE_DOMAIN:-localhost} networks: hub: networks: hub: driver: bridge driver_opts: com.docker.network.bridge.name: hub ipam: driver: default config: - subnet: 172.40.1.0/24