services: forest: image: git.kjuulh.io/kjuulh/forest:${FOREST_IMAGE_VERSION:-latest} restart: always env_file: ".env" command: | /app/forest-server serve ports: - "4040:4040" environment: RUST_LOG: "forest=debug,info" LOG_LEVEL: short FOREST_HOST: 0.0.0.0:4040 networks: - public - internal healthcheck: test: ["CMD", "/app/forest-server", "--external-host", "http://127.0.0.1:4040", "admin", "status"] interval: 10s timeout: 10s retries: 3 start_period: 30s depends_on: postgres: condition: service_healthy restart: true nats: condition: service_healthy restart: true forage: image: git.kjuulh.io/forage/client/forage-server:${FORAGE_IMAGE_VERSION:-latest} restart: always env_file: ".env.forage" command: | /app/forage ports: - "3000:3000" environment: RUST_LOG: "forage=debug,info" LOG_LEVEL: short FORAGE_HOST: 0.0.0.0:3000 networks: - public - internal healthcheck: test: ["CMD", "/app/forage", "--external-host", "http://127.0.0.1:3000", "admin", "status"] interval: 10s timeout: 10s retries: 3 start_period: 30s depends_on: forest: condition: service_healthy restart: true postgres: condition: service_healthy restart: true nats: condition: service_healthy restart: true postgres: image: postgres:18 restart: always shm_size: 128mb env_file: ".env" networks: - internal volumes: - ./data/postgres/18:/var/lib/postgresql/18/docker - ./init-databases.sh:/docker-entrypoint-initdb.d/init-databases.sh environment: POSTGRES_USER: forest POSTGRES_DB: forest healthcheck: test: ["CMD", "pg_isready", "-U", "forest", "-d", "forest"] interval: 10s retries: 5 start_period: 30s timeout: 10s backup: image: prodrigestivill/postgres-backup-local restart: always volumes: - ./data/backups:/backups env_file: .env links: - "postgres" networks: - internal environment: - POSTGRES_HOST=postgres - POSTGRES_DB=forest,forage - POSTGRES_USER=forest - POSTGRES_EXTRA_OPTS=-Z1 --schema=public --blobs - BACKUP_ON_START=TRUE - SCHEDULE=@daily # or cron: "0 2 * * *" - BACKUP_KEEP_DAYS=7 # keep daily backups for 7 days - BACKUP_KEEP_WEEKS=4 # keep weekly backups for 4 weeks - BACKUP_KEEP_MONTHS=6 # keep monthly backups for 6 months - HEALTHCHECK_PORT=8080 nats: image: nats:2-alpine restart: always command: | -js -sd /data -m 8222 networks: - internal ports: - 4222:4222 - 6222:6222 - 8222:8222 volumes: - ./data/nats/data:/data healthcheck: test: wget http://localhost:8222/healthz -q -S -O - start_period: 3s retries: 3 timeout: 3s interval: 14s networks: public: internal: