# Mist — production-ish Docker Compose stack. # Brings up: postgres, redis, rabbitmq, api, worker, admin-web. # All env config comes from .env (copy from .env.example). services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - postgres-vol:/var/lib/postgresql/data networks: - mist-net redis: image: redis:7-alpine restart: unless-stopped volumes: - redis-vol:/data networks: - mist-net rabbitmq: image: rabbitmq:3.13-management-alpine restart: unless-stopped environment: RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS} volumes: - rabbitmq-vol:/var/lib/rabbitmq networks: - mist-net api: image: ghcr.io/REPLACE_ME/mist-backend:latest build: context: ./backend restart: unless-stopped depends_on: - postgres - redis - rabbitmq env_file: - .env volumes: - cache-vol:/mist/cache - tmp-vol:/mist/tmp # TODO: bind-mount NAS NFS export here. Configure host-side NFS mount, # then uncomment the line below and point it at the host mount point. # - /mnt/nas:/mnt/nas:rw ports: - "8000:8000" networks: - mist-net worker: image: ghcr.io/REPLACE_ME/mist-backend:latest build: context: ./backend restart: unless-stopped command: ["celery", "-A", "mist.worker", "worker", "--loglevel=INFO"] depends_on: - postgres - redis - rabbitmq env_file: - .env volumes: - cache-vol:/mist/cache - tmp-vol:/mist/tmp # - /mnt/nas:/mnt/nas:rw networks: - mist-net admin-web: image: ghcr.io/REPLACE_ME/mist-admin-web:latest build: context: ./admin-web restart: unless-stopped ports: - "5173:80" networks: - mist-net volumes: postgres-vol: redis-vol: rabbitmq-vol: cache-vol: tmp-vol: networks: mist-net: driver: bridge