ShipAI Docs
Deployment

Docker

Run and operate the full stack with Docker Compose and Docker Swarm.

This guide covers the repo's Docker files and exactly when to use each.

Use docker-compose.yml for developer backing services and optional local feature services.

Use docker-compose-app.yml to run app/admin/web/worker plus infra on one machine.

Use docker-stack.yml with GitLab CI/CD for production-like rolling updates and controlled deploys.

Compose File Roles

docker-compose.yml (infra-first local)

Best for local development backing services:

  • postgres, redis, minio, createbuckets, maildev
  • optional: searxng, qdrant, neo4j, converter
  • optional worker profile: worker

Start all services:

docker compose up -d

Start infra + worker profile:

docker compose --profile worker up -d

docker-compose-app.yml (full runtime on one host)

Best for running app + admin + web + worker with infra in one Compose project.

docker compose -f docker-compose-app.yml up -d
docker compose -f docker-compose-app.yml logs -f app

docker-stack.yml (Swarm production)

Best for GitLab-driven production deploys with replicas and rolling updates.

docker swarm init
docker stack deploy -c docker-stack.yml ai --with-registry-auth
docker stack services ai
docker stack ps ai

Common Operations

Health checks

bun health
bun health:wait

Logs and status

docker compose ps
docker compose logs -f
docker compose logs -f app

For stack mode:

docker stack services ai
docker service logs -f ai_app

Migrations and seed

Local:

bun db:migrate
bun db:seed:plans

Container-based:

docker compose exec app bun run db:migrate
docker compose exec app bun run packages/db/src/seed-plans.ts

Minimal Services Mode

Run only required local services:

docker compose up postgres redis minio createbuckets maildev -d

Then disable optional capabilities in env files:

  • FEATURE_SEARCH_ENABLED=false
  • FEATURE_DEEP_SEARCH_ENABLED=false
  • FEATURE_MEMORY_ENABLED=false
  • DEVELOPMENT_MODE=true

On this page