services: pocketbase: image: ghcr.io/muchobien/pocketbase:latest restart: unless-stopped command: - --encryptionEnv #optional - ENCRYPTION #optional environment: ENCRYPTION: ${ENCRYPTION_SECRET} ports: - "3002:8090" volumes: - ./data/pb/data:/pb_data - ./data/pb/public:/pb_public #optional - ./data/pb/hooks:/pb_hooks #optional healthcheck: #optional (recommended) since v0.10.0 test: wget --no-verbose --tries=1 --spider http://localhost:8090/api/health || exit 1 interval: 5s timeout: 5s retries: 5 umami: image: ghcr.io/umami-software/umami:postgresql-latest ports: - "3001:3000" environment: DATABASE_URL: postgresql://umami:umami@umami-db:5432/umami DATABASE_TYPE: postgresql APP_SECRET: ${APP_SECRET} depends_on: umami-db: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"] interval: 5s timeout: 5s retries: 5 app: build: . ports: - '3000:3000' environment: - NODE_ENV=production - NEXT_PUBLIC_UMAMI_URL=${NEXT_PUBLIC_UMAMI_URL} - NEXT_PUBLIC_UMAMI_TOKEN=${NEXT_PUBLIC_UMAMI_TOKEN} - NEXT_PUBLIC_POCKETBASE_URL=${NEXT_PUBLIC_POCKETBASE_URL} restart: unless-stopped umami-db: image: postgres:15-alpine environment: POSTGRES_DB: umami POSTGRES_USER: umami POSTGRES_PASSWORD: umami volumes: - ./data/umami/data:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5