services: mongodb: image: mongo:latest ports: - "${HOST_MONGO_PORT}:${CONTAINER_MONGO_PORT}" command: ["--replSet", "${MONGO_REPLICA_SET_NAME}", "--bind_ip_all", "--port", "${CONTAINER_MONGO_PORT}", "--keyFile", "/etc/mongo-keyfile"] environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} volumes: - mongodb_data:${MONGO_PERSISTENCE_DIR} - ./mongo-keyfile:/etc/mongo-keyfile mongodb_setup: image: mongo:latest depends_on: - mongodb command: ["bash", "/mongo-setup.sh"] volumes: - ./mongo-setup.sh:/mongo-setup.sh - ./mongo-keyfile:/etc/mongo-keyfile - ./.env:/.env # Disabled for now: Storing data locally in server with a volume instead # weaviate: # image: semitechnologies/weaviate:1.19.5 # command: # - --host # - 0.0.0.0 # - --port # - ${CONTAINER_WEAVIATE_PORT} # - --scheme # - http # ports: # - "${HOST_WEAVIATE_PORT}:${CONTAINER_WEAVIATE_PORT}" # restart: on-failure:0 # environment: # QUERY_DEFAULTS_LIMIT: 25 # AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' # AUTHENTICATION_APIKEY_ENABLED: 'false' # PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DIR} # DEFAULT_VECTORIZER_MODULE: 'none' # ENABLE_MODULES: '' # CLUSTER_HOSTNAME: 'node1' # volumes: # - weaviate_data:${WEAVIATE_PERSISTENCE_DIR} server: build: ./server ports: - "${HOST_SERVER_PORT}:${CONTAINER_SERVER_PORT}" depends_on: - mongodb # - weaviate environment: # Keys OPENAI_API_KEY: ${OPENAI_API_KEY} GITHUB_TOKEN: ${GITHUB_TOKEN} # Server config FLASK_DEBUG: "true" # Hot reload server code changes CONTAINER_SERVER_PORT: ${CONTAINER_SERVER_PORT} # Weaviate HOST_WEAVIATE_PORT: ${HOST_WEAVIATE_PORT} CONTAINER_WEAVIATE_PORT: ${CONTAINER_WEAVIATE_PORT} # File storage FILE_STORAGE_DIR: ${FILE_STORAGE_DIR} # Save downloaded files here CONTEXT_STORAGE_DIR: ${CONTEXT_STORAGE_DIR} # Save llama-index files here # MongoDB CONTAINER_MONGO_PORT: ${CONTAINER_MONGO_PORT} MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} volumes: - ./server:/app # Hot reload server code changes - file_data:${FILE_STORAGE_DIR} - context_data:${CONTEXT_STORAGE_DIR} client: build: ./flutter depends_on: - server environment: CONTAINER_SERVER_PORT: ${CONTAINER_SERVER_PORT} volumes: - ./flutter:/app # Hotload client code changes ports: - "${HOST_CLIENT_PORT}:${CONTAINER_CLIENT_PORT}" volumes: mongodb_data: weaviate_data: file_data: context_data: