Spaces:
Runtime error
Runtime error
| services: | |
| # --- HRMS (Frappe) --- | |
| frappe-hrms-mariadb: | |
| image: ghcr.io/collinear-ai/collinear/frappe-hrms-mariadb:latest | |
| environment: | |
| MYSQL_ROOT_PASSWORD: admin | |
| MARIADB_ROOT_PASSWORD: admin | |
| frappe-hrms-redis: | |
| image: ghcr.io/collinear-ai/collinear/frappe-hrms-redis:latest | |
| frappe-hrms: | |
| image: ghcr.io/collinear-ai/collinear/frappe-hrms:latest | |
| environment: | |
| FRAPPE_SITE_NAME: hrms.localhost | |
| FRAPPE_ADMIN_PASSWORD: admin | |
| FRAPPE_DB_HOST: frappe-hrms-mariadb | |
| FRAPPE_DB_PORT: "3306" | |
| FRAPPE_DB_ROOT_PASSWORD: admin | |
| FRAPPE_REDIS_HOST: frappe-hrms-redis | |
| FRAPPE_REDIS_PORT: "6379" | |
| FRAPPE_SOCKETIO_PORT: "9000" | |
| FRAPPE_DEVELOPER_MODE: "1" | |
| FRAPPE_ENABLE_SCHEDULER: "1" | |
| FRAPPE_INSTALL_APPS: hrms,collinear_hrms_seed | |
| FRAPPE_DEPENDENCY_TIMEOUT: "180" | |
| depends_on: | |
| frappe-hrms-mariadb: | |
| condition: service_healthy | |
| frappe-hrms-redis: | |
| condition: service_healthy | |
| frappe-hrms-env: | |
| image: ghcr.io/collinear-ai/collinear/frappe-hrms-env:latest | |
| ports: | |
| - "8030:8030" | |
| environment: | |
| FRAPPE_BASE_URL: http://frappe-hrms:8000 | |
| FRAPPE_SITE_NAME: hrms.localhost | |
| FRAPPE_ADMIN_USERNAME: Administrator | |
| FRAPPE_ADMIN_PASSWORD: admin | |
| depends_on: | |
| frappe-hrms: | |
| condition: service_healthy | |
| healthcheck: | |
| test: ["CMD-SHELL", "python3 -c \"import urllib.request; urllib.request.urlopen('http://localhost:8030/health')\""] | |
| interval: 15s | |
| timeout: 5s | |
| retries: 120 | |
| start_period: 60s | |
| # --- Email (MailHog) --- | |
| mailhog: | |
| image: mailhog/mailhog:v1.0.1 | |
| healthcheck: | |
| test: ["CMD-SHELL", "wget --spider -q http://localhost:8025/api/v2/messages || exit 1"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 6 | |
| start_period: 10s | |
| email-env: | |
| image: ghcr.io/collinear-ai/collinear/email-env:latest | |
| ports: | |
| - "8040:8040" | |
| environment: | |
| MAILHOG_BASE_URL: http://mailhog:8025 | |
| MAILHOG_SMTP_HOST: mailhog | |
| MAILHOG_SMTP_PORT: "1025" | |
| depends_on: | |
| mailhog: | |
| condition: service_healthy | |
| healthcheck: | |
| test: ["CMD-SHELL", "python3 -c \"import urllib.request; urllib.request.urlopen('http://localhost:8040/health')\""] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 6 | |
| start_period: 10s | |
| # --- Calendar (Baikal + Chronos) --- | |
| baikal: | |
| image: ckulka/baikal:0.10.1-nginx | |
| volumes: | |
| - baikal-config:/var/www/baikal/config | |
| - baikal-specific:/var/www/baikal/Specific | |
| healthcheck: | |
| test: ["CMD-SHELL", "curl -sf http://localhost:80/ > /dev/null || exit 1"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 10 | |
| start_period: 10s | |
| chronos-mcp: | |
| image: ghcr.io/collinear-ai/collinear/chronos-mcp:latest | |
| environment: | |
| CALDAV_BASE_URL: http://baikal:80/dav.php | |
| CALDAV_USERNAME: chronos | |
| CALDAV_PASSWORD: admin | |
| depends_on: | |
| baikal: | |
| condition: service_healthy | |
| chronos-server: | |
| image: ghcr.io/collinear-ai/collinear/chronos-server:latest | |
| ports: | |
| - "8050:8050" | |
| environment: | |
| CHRONOS_MCP_URL: http://chronos-mcp:8040/mcp | |
| CALDAV_BASE_URL: http://baikal:80/dav.php | |
| CALDAV_USERNAME: chronos | |
| CALDAV_PASSWORD: admin | |
| depends_on: | |
| chronos-mcp: | |
| condition: service_healthy | |
| healthcheck: | |
| test: ["CMD-SHELL", "python3 -c \"import urllib.request; urllib.request.urlopen('http://localhost:8050/health')\""] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 18 | |
| start_period: 30s | |
| # --- RocketChat --- | |
| rocketchat-mongodb: | |
| image: ghcr.io/collinear-ai/collinear/rocketchat-mongodb:6-preseeded | |
| rocketchat: | |
| image: ghcr.io/collinear-ai/collinear/rocketchat:7.6.0 | |
| depends_on: | |
| rocketchat-mongodb: | |
| condition: service_healthy | |
| rocketchat-env: | |
| image: ghcr.io/collinear-ai/collinear/rocketchat-env:latest | |
| ports: | |
| - "8060:8060" | |
| environment: | |
| ROCKETCHAT_BASE_URL: http://rocketchat:3000 | |
| depends_on: | |
| rocketchat: | |
| condition: service_healthy | |
| healthcheck: | |
| test: ["CMD-SHELL", "python3 -c \"import urllib.request; urllib.request.urlopen('http://localhost:8060/health')\""] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 12 | |
| start_period: 30s | |
| # --- OpenEnv wrapper --- | |
| openenv-server: | |
| build: | |
| context: . | |
| dockerfile: server/Dockerfile | |
| ports: | |
| - "8000:8000" | |
| environment: | |
| HRMS_TOOL_SERVER_URL: http://frappe-hrms-env:8030 | |
| EMAIL_TOOL_SERVER_URL: http://email-env:8040 | |
| CALENDAR_TOOL_SERVER_URL: http://chronos-server:8050 | |
| ROCKETCHAT_TOOL_SERVER_URL: http://rocketchat-env:8060 | |
| COLLINEAR_API_KEY: ${COLLINEAR_API_KEY:-} | |
| depends_on: | |
| frappe-hrms-env: | |
| condition: service_healthy | |
| email-env: | |
| condition: service_healthy | |
| chronos-server: | |
| condition: service_healthy | |
| rocketchat-env: | |
| condition: service_healthy | |
| volumes: | |
| baikal-config: {} | |
| baikal-specific: {} | |