mirror of https://github.com/msgbyte/tailchat
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			178 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
			
		
		
	
	
			178 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			YAML
		
	
version: "3.3"
 | 
						|
 | 
						|
services:
 | 
						|
  # Gateway
 | 
						|
  service-gateway:
 | 
						|
    build:
 | 
						|
      context: .
 | 
						|
    image: tailchat
 | 
						|
    restart: unless-stopped
 | 
						|
    env_file: docker-compose.env
 | 
						|
    environment:
 | 
						|
      SERVICES: core/gateway
 | 
						|
      PORT: 3000
 | 
						|
    depends_on:
 | 
						|
      - mongo
 | 
						|
      - redis
 | 
						|
    labels:
 | 
						|
      - "traefik.enable=true"
 | 
						|
      - "traefik.http.routers.api-gw.rule=PathPrefix(`/`)"
 | 
						|
      - "traefik.http.services.api-gw.loadbalancer.server.port=3000"
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # User Service
 | 
						|
  service-user:
 | 
						|
    build:
 | 
						|
      context: .
 | 
						|
    image: tailchat
 | 
						|
    restart: unless-stopped
 | 
						|
    env_file: docker-compose.env
 | 
						|
    environment:
 | 
						|
      SERVICES: core/user/*.service.js
 | 
						|
    depends_on:
 | 
						|
      - mongo
 | 
						|
      - redis
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # Group Service
 | 
						|
  service-group:
 | 
						|
    build:
 | 
						|
      context: .
 | 
						|
    image: tailchat
 | 
						|
    restart: unless-stopped
 | 
						|
    env_file: docker-compose.env
 | 
						|
    environment:
 | 
						|
      SERVICES: core/group/*.service.js
 | 
						|
    depends_on:
 | 
						|
      - mongo
 | 
						|
      - redis
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # Chat Service
 | 
						|
  service-chat:
 | 
						|
    build:
 | 
						|
      context: .
 | 
						|
    image: tailchat
 | 
						|
    restart: unless-stopped
 | 
						|
    env_file: docker-compose.env
 | 
						|
    environment:
 | 
						|
      SERVICES: core/chat/*.service.js
 | 
						|
    depends_on:
 | 
						|
      - mongo
 | 
						|
      - redis
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # File Service / Plugin Registry / Configuration Service
 | 
						|
  service-file:
 | 
						|
    build:
 | 
						|
      context: .
 | 
						|
    image: tailchat
 | 
						|
    restart: unless-stopped
 | 
						|
    env_file: docker-compose.env
 | 
						|
    environment:
 | 
						|
      SERVICES: core/file,core/plugin/registry,core/config
 | 
						|
    depends_on:
 | 
						|
      - mongo
 | 
						|
      - redis
 | 
						|
      - minio
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # Open Platform
 | 
						|
  service-openapi:
 | 
						|
    build:
 | 
						|
      context: .
 | 
						|
    image: tailchat
 | 
						|
    restart: unless-stopped
 | 
						|
    env_file: docker-compose.env
 | 
						|
    environment:
 | 
						|
      SERVICES: openapi/app,openapi/bot,openapi/integration,openapi/oidc/oidc
 | 
						|
      OPENAPI_PORT: 3003
 | 
						|
      OPENAPI_UNDER_PROXY: "true"
 | 
						|
    depends_on:
 | 
						|
      - mongo
 | 
						|
      - redis
 | 
						|
      - minio
 | 
						|
    labels:
 | 
						|
      - "traefik.enable=true"
 | 
						|
      - "traefik.http.routers.openapi-oidc.rule=PathPrefix(`/open`)"
 | 
						|
      - "traefik.http.services.openapi-oidc.loadbalancer.server.port=3003"
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # Plugin Service (All Plugins)
 | 
						|
  service-all-plugins:
 | 
						|
    build:
 | 
						|
      context: .
 | 
						|
    image: tailchat
 | 
						|
    restart: unless-stopped
 | 
						|
    env_file: docker-compose.env
 | 
						|
    environment:
 | 
						|
      SERVICEDIR: plugins
 | 
						|
    depends_on:
 | 
						|
      - mongo
 | 
						|
      - redis
 | 
						|
      - minio
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # Database
 | 
						|
  mongo:
 | 
						|
    image: mongo:4
 | 
						|
    restart: on-failure
 | 
						|
    volumes:
 | 
						|
      - data:/data/db
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # Data cache and Transporter
 | 
						|
  redis:
 | 
						|
    image: redis:alpine
 | 
						|
    restart: on-failure
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
 | 
						|
  # Persist Storage
 | 
						|
  minio:
 | 
						|
    image: minio/minio
 | 
						|
    restart: on-failure
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
    environment:
 | 
						|
      MINIO_ROOT_USER: tailchat
 | 
						|
      MINIO_ROOT_PASSWORD: com.msgbyte.tailchat
 | 
						|
    volumes:
 | 
						|
      - storage:/data
 | 
						|
    command: minio server /data --console-address ":9001"
 | 
						|
 | 
						|
  # Router
 | 
						|
  traefik:
 | 
						|
    image: traefik:v2.1
 | 
						|
    restart: unless-stopped
 | 
						|
    command:
 | 
						|
      - "--api.insecure=true" # Don't do that in production!
 | 
						|
      - "--providers.docker=true"
 | 
						|
      - "--providers.docker.exposedbydefault=false"
 | 
						|
      - "--entryPoints.web.address=:80"
 | 
						|
      - "--entryPoints.web.forwardedHeaders.insecure" # Not good
 | 
						|
    ports:
 | 
						|
      - 11000:80
 | 
						|
      - 127.0.0.1:11001:8080
 | 
						|
    volumes:
 | 
						|
      - /var/run/docker.sock:/var/run/docker.sock:ro
 | 
						|
    networks:
 | 
						|
      - internal
 | 
						|
      - default
 | 
						|
 | 
						|
networks:
 | 
						|
  internal:
 | 
						|
    name: tailchat-internal
 | 
						|
 | 
						|
volumes:
 | 
						|
  data:
 | 
						|
  storage:
 |