services: # ----------------------- # Growchief Application # ----------------------- growchief: image: ghcr.io/growchief/growchief:latest container_name: growchief restart: always environment: DATABASE_URL: "postgresql://growchief-user:growchief-password@growchief-postgres:5432/growchief-db-local" STORAGE_PROVIDER: "local" UPLOAD_DIRECTORY: "/uploads" NEXT_PUBLIC_UPLOAD_DIRECTORY: "/uploads" AUTH_SECRET: "YourSpecialString!@#111" GOOGLE_CLIENT_ID: "For Login With Google Client ID" GOOGLE_CLIENT_SECRET: "For Login With Google Client Secret" TEMPORAL_ADDRESS: "temporal:7233" APOLLO_API_KEY: "" DATAGMA_API_KEY: "" volumes: - growchief-config:/config/ - growchief-uploads:/uploads/ ports: - 5002:5000 networks: - growchief-network - temporal-network depends_on: growchief-postgres: condition: service_healthy growchief-postgres: image: postgres:16 container_name: growchief-postgres restart: always environment: POSTGRES_PASSWORD: growchief-password POSTGRES_USER: growchief-user POSTGRES_DB: growchief-db-local volumes: - postgres-volume:/var/lib/postgresql/data networks: - growchief-network healthcheck: test: pg_isready -U growchief-user -d growchief-db-local interval: 10s timeout: 3s retries: 3 # ----------------------- # Temporal Stack # ----------------------- temporal-elasticsearch: container_name: temporal-elasticsearch image: elasticsearch:7.17.27 environment: - cluster.routing.allocation.disk.threshold_enabled=true - cluster.routing.allocation.disk.watermark.low=512mb - cluster.routing.allocation.disk.watermark.high=256mb - cluster.routing.allocation.disk.watermark.flood_stage=128mb - discovery.type=single-node - ES_JAVA_OPTS=-Xms256m -Xmx256m - xpack.security.enabled=false networks: - temporal-network expose: - 9200 volumes: - temporal-es-data:/var/lib/elasticsearch/data temporal-postgresql: container_name: temporal-postgresql image: postgres:16 environment: POSTGRES_PASSWORD: temporal POSTGRES_USER: temporal networks: - temporal-network expose: - 5432 volumes: - temporal-postgres-data:/var/lib/postgresql/data temporal: container_name: temporal image: temporalio/auto-setup:1.28.1 depends_on: - temporal-postgresql - temporal-elasticsearch environment: - DB=postgres12 - DB_PORT=5432 - POSTGRES_USER=temporal - POSTGRES_PWD=temporal - POSTGRES_SEEDS=temporal-postgresql - DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development-sql.yaml - ENABLE_ES=true - ES_SEEDS=temporal-elasticsearch - ES_VERSION=v7 - TEMPORAL_ADDRESS=temporal:7233 - TEMPORAL_CLI_ADDRESS=temporal:7233 networks: - temporal-network ports: - 7233 volumes: - ./var/dynamicconfig:/etc/temporal/config/dynamicconfig temporal-admin-tools: container_name: temporal-admin-tools image: temporalio/admin-tools:1.28.1-tctl-1.18.4-cli-1.4.1 depends_on: - temporal environment: - TEMPORAL_ADDRESS=temporal:7233 - TEMPORAL_CLI_ADDRESS=temporal:7233 networks: - temporal-network stdin_open: true tty: true temporal-ui: container_name: temporal-ui image: temporalio/ui:2.34.0 depends_on: - temporal environment: - TEMPORAL_ADDRESS=temporal:7233 - TEMPORAL_CORS_ORIGINS=http://localhost:3000 networks: - temporal-network ports: - 8080:8080 # ----------------------- # Volumes # ----------------------- volumes: postgres-volume: external: false growchief-config: external: false growchief-uploads: external: false temporal-postgres-data: external: false temporal-es-data: external: false temporal-config: external: false # ----------------------- # Networks # ----------------------- networks: growchief-network: external: false temporal-network: driver: bridge name: temporal-network