x-silo-env: &silo-env environment: - PORT=3000 - BATCH_SIZE=${BATCH_SIZE:-60} - MQ_PREFETCH_COUNT=${MQ_PREFETCH_COUNT:-5} - APP_BASE_URL=${APP_BASE_URL:-http://web:3000} - SILO_API_BASE_URL=${SILO_API_BASE_URL:-http://localhost:5050} - DB_URL=${DB_URL:-postgresql://plane:plane@plane-db/silo} - AMQP_URL=${AMQP_URL:-amqp://guest:guest@plane-mq:5672/} - REDIS_URL=${REDIS_URL:-redis://plane-redis:6379/} - JIRA_CLIENT_ID=${JIRA_CLIENT_ID:-""} - JIRA_CLIENT_SECRET=${JIRA_CLIENT_SECRET:-""} - LINEAR_CLIENT_ID=${LINEAR_CLIENT_ID:-""} - LINEAR_CLIENT_SECRET=${LINEAR_CLIENT_SECRET:-""} services: web: container_name: web build: context: . dockerfile: ./web/Dockerfile.web args: DOCKER_BUILDKIT: 1 restart: always command: node web/server.js web depends_on: - api admin: container_name: admin build: context: . dockerfile: ./admin/Dockerfile.admin args: DOCKER_BUILDKIT: 1 restart: always command: node admin/server.js admin depends_on: - api - web space: container_name: space build: context: . dockerfile: ./space/Dockerfile.space args: DOCKER_BUILDKIT: 1 restart: always command: node space/server.js space depends_on: - api - web live: container_name: live build: context: . dockerfile: ./live/Dockerfile.live args: DOCKER_BUILDKIT: 1 restart: always command: node live/dist/server.js silo: <<: *silo-env container_name: silo build: context: . dockerfile: ./silo/Dockerfile.silo args: DOCKER_BUILDKIT: 1 restart: always command: > /bin/sh -c " npm --prefix ./silo run db:migrate node silo/start.js " depends_on: plane-mq: condition: service_healthy # monitor: # container_name: monitor # build: # context: . # dockerfile: ./monitor/Dockerfile # args: # DOCKER_BUILDKIT: 1 # restart: always api: container_name: api build: context: ./apiserver dockerfile: Dockerfile.api args: DOCKER_BUILDKIT: 1 restart: always command: ./bin/docker-entrypoint-api-ee.sh env_file: - ./apiserver/.env depends_on: - plane-db - plane-redis mongodb: image: "mongo" restart: unless-stopped volumes: - "mongodb_data:/data/db" environment: - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME:-plane} - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD:-plane} worker: container_name: bgworker build: context: ./apiserver dockerfile: Dockerfile.api args: DOCKER_BUILDKIT: 1 restart: always command: ./bin/docker-entrypoint-worker.sh env_file: - ./apiserver/.env depends_on: - api - plane-db - plane-redis beat-worker: container_name: beatworker build: context: ./apiserver dockerfile: Dockerfile.api args: DOCKER_BUILDKIT: 1 restart: always command: ./bin/docker-entrypoint-beat.sh env_file: - ./apiserver/.env depends_on: - api - plane-db - plane-redis migrator: container_name: plane-migrator build: context: ./apiserver dockerfile: Dockerfile.api args: DOCKER_BUILDKIT: 1 restart: no command: ./bin/docker-entrypoint-migrator.sh env_file: - ./apiserver/.env depends_on: - plane-db - plane-redis plane-db: container_name: plane-db image: postgres:15.7-alpine restart: always command: > bash -c " docker-entrypoint.sh postgres & sleep 10 psql -U $$POSTGRES_USER -d $$POSTGRES_DB -c 'CREATE DATABASE silo;' wait " volumes: - pgdata:/var/lib/postgresql/data env_file: - .env environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_DB: ${POSTGRES_DB} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} PGDATA: /var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 start_period: 10s plane-redis: container_name: plane-redis image: valkey/valkey:7.2.5-alpine restart: always volumes: - redisdata:/data plane-mq: container_name: plane-mq image: rabbitmq:management restart: always ports: - "15672:15672" env_file: - .env environment: RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD} RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_VHOST} healthcheck: test: rabbitmq-diagnostics -q ping interval: 10s timeout: 10s retries: 5 volumes: - rabbitmq_data:/var/lib/rabbitmq plane-minio: container_name: plane-minio image: minio/minio restart: always command: server /export --console-address ":9090" volumes: - uploads:/export environment: MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID} MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY} # Comment this if you already have a reverse proxy running proxy: container_name: proxy build: context: ./nginx dockerfile: Dockerfile restart: always ports: - ${NGINX_PORT}:80 environment: FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT:-5242880} BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads} depends_on: - web - api - space - admin volumes: pgdata: redisdata: uploads: rabbitmq_data: mongodb_data: