Skip to main content

Docker Override

Customize IntelliAsk's bundled Docker services with an optional docker-compose.override.yml without editing the *.compose.yml files.

Advanced users only

IntelliAsk's stack is normally managed by the intelliask binary, and most configuration is done through .env and intelliask.yaml. Only reach for a Docker override when you need to change the Docker services themselves -- for example, mounting extra volumes, remapping ports, or swapping in external infrastructure.

The IntelliAsk stack lives in the config/ directory and is split across several service files -- intelliask.compose.yml, mongodb.compose.yml, meilisearch.compose.yml, rag.compose.yml, codeapi.compose.yml, proxy.compose.yml, and exporter.compose.yml. The active set is listed in the COMPOSE_FILE variable inside config/.env, and Docker Compose merges them together at runtime.

You should not edit these bundled files directly -- updates would overwrite your changes. Instead, layer your customizations on top with an override.

Two Ways to Override

Option 1: docker-compose.override.yml (auto-merged)

Create a docker-compose.override.yml file in the config/ directory (the same folder as the *.compose.yml files). This file is not shipped by default -- if it exists, Docker Compose automatically merges it with the files listed in COMPOSE_FILE. This is the recommended approach for most customizations.

Option 2: Custom compose file in COMPOSE_FILE

Create your own custom.compose.yml and explicitly add it to the COMPOSE_FILE list in config/.env. Later files override or add to earlier ones:

COMPOSE_FILE=mongodb.compose.yml:meilisearch.compose.yml:intelliask.compose.yml:custom.compose.yml

One entry per service

Whichever approach you use, each service (intelliask, mongodb, meilisearch, rag-api, vectordb, proxy, ...) can appear only once in your override. To change multiple settings on a single service, combine them under that one entry.

Applying Changes

After creating or editing your override, restart the stack so Compose re-merges the files:

intelliask restart

Then confirm your changes took effect:

docker ps

Examples

Use an external S3 bucket instead of bundled Garage

services:
  codeapi-file-server:
    environment:
      - MINIO_ENDPOINT=s3.amazonaws.com
      - MINIO_USE_SSL=true
      - MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE
      - MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

You can then disable the bundled Garage service with intelliask module disable garage.

Use an external managed Redis

services:
  intelliask:
    environment:
      - USE_REDIS=true
      - REDIS_URI=redis://your-managed-redis.cloud:6379
 
  codeapi-api:
    environment:
      - REDIS_HOST=your-managed-redis.cloud
      - REDIS_PORT=6379
      - REDIS_PASSWORD=your-redis-password

Expose a service port for debugging

services:
  mongodb:
    ports:
      - '127.0.0.1:27017:27017'

Watch exposed ports

Exposing MongoDB, Meilisearch, or other data services publicly can leave your data vulnerable. Bind to 127.0.0.1 and avoid default ports in production or sensitive environments.

Reference

  • Config file already mounted: intelliask.yaml is mounted into the intelliask service for you (./intelliask.yaml:/intelliask.yaml:ro). You do not need an override to make IntelliAsk read it -- just edit the file and restart.
  • Order of precedence: values in files listed later in COMPOSE_FILE (and in docker-compose.override.yml) take precedence over the same values in earlier files.
  • Security: when customizing ports and exposing services publicly, be conscious of the security implications and avoid defaults for production.

For more detail, see the official Docker documentation:

Last updated on