Files
clank-forest/docker-compose.yaml
2026-03-21 02:06:44 +01:00

128 lines
3.0 KiB
YAML

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_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
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: