version: '3' volumes: data: networks: wren: driver: bridge services: bootstrap: image: ghcr.io/canner/wren-bootstrap:${WREN_BOOTSTRAP_VERSION} restart: on-failure platform: ${PLATFORM} environment: DATA_PATH: /app/data PG_USERNAME: ${PG_USERNAME} PG_PASSWORD: ${PG_PASSWORD} volumes: - data:/app/data command: /bin/sh /app/init.sh wren-engine: image: ghcr.io/canner/wren-engine:${WREN_ENGINE_VERSION} restart: on-failure platform: ${PLATFORM} expose: - ${WREN_ENGINE_PORT} - ${WREN_ENGINE_SQL_PORT} volumes: - data:/usr/src/app/etc networks: - wren depends_on: - bootstrap wren-ai-service: image: ghcr.io/canner/wren-ai-service:${WREN_AI_SERVICE_VERSION} restart: on-failure platform: ${PLATFORM} expose: - ${WREN_AI_SERVICE_PORT} environment: WREN_AI_SERVICE_PORT: ${WREN_AI_SERVICE_PORT} OPENAI_API_KEY: ${OPENAI_API_KEY} OPENAI_GENERATION_MODEL: ${OPENAI_GENERATION_MODEL} QDRANT_HOST: qdrant WREN_ENGINE_ENDPOINT: http://wren-engine:${WREN_ENGINE_PORT} # sometimes the console won't show print messages, # using PYTHONUNBUFFERED: 1 can fix this PYTHONUNBUFFERED: 1 networks: - wren depends_on: - wren-engine - qdrant qdrant: image: qdrant/qdrant:v1.7.4 restart: on-failure expose: - 6333 - 6334 volumes: - data:/qdrant/storage networks: - wren wren-ui: image: ghcr.io/canner/wren-ui:${WREN_UI_VERSION} restart: on-failure platform: ${PLATFORM} environment: DB_TYPE: sqlite # /app is the working directory in the container SQLITE_FILE: /app/data/db.sqlite3 WREN_ENGINE_ENDPOINT: http://wren-engine:${WREN_ENGINE_PORT} WREN_AI_ENDPOINT: http://wren-ai-service:${WREN_AI_SERVICE_PORT} OPENAI_GENERATION_MODEL: ${OPENAI_GENERATION_MODEL} PG_USERNAME: ${PG_USERNAME} PG_PASSWORD: ${PG_PASSWORD} ports: # HOST_PORT is the port you want to expose to the host machine - ${HOST_PORT}:3000 volumes: - data:/app/data networks: - wren depends_on: - wren-ai-service - wren-engine