Coolify's default healthcheck hits / expecting 200, but the app answers 302 (redirect to /login), which marked the stack exited:unhealthy and stopped it. app also now waits for pocketbase to be healthy.
54 lines
2.1 KiB
YAML
54 lines
2.1 KiB
YAML
# Full PokeShare stack: the Astro app and its PocketBase backend.
|
|
# In Coolify, deploy this file as a "Docker Compose" resource.
|
|
# The `app` service is the one to expose on your public domain.
|
|
# `pocketbase` stays on the internal network — expose it on a subdomain
|
|
# only if you want to reach the admin UI (/_/) from outside.
|
|
services:
|
|
pocketbase:
|
|
build: ./pocketbase
|
|
restart: unless-stopped
|
|
environment:
|
|
# Optional: create/update the admin account on boot (min 8 chars)
|
|
PB_SUPERUSER_EMAIL: ${PB_SUPERUSER_EMAIL:-}
|
|
PB_SUPERUSER_PASSWORD: ${PB_SUPERUSER_PASSWORD:-}
|
|
# Optional: app URL used in transactional emails (reset links...)
|
|
PB_APP_URL: ${PB_APP_URL:-}
|
|
# Optional: SMTP for transactional emails. If SMTP_HOST is empty,
|
|
# mail stays disabled (the rest is ignored).
|
|
SMTP_HOST: ${SMTP_HOST:-}
|
|
SMTP_PORT: ${SMTP_PORT:-587}
|
|
SMTP_USERNAME: ${SMTP_USERNAME:-}
|
|
SMTP_PASSWORD: ${SMTP_PASSWORD:-}
|
|
SMTP_TLS: ${SMTP_TLS:-true}
|
|
SMTP_SENDER_NAME: ${SMTP_SENDER_NAME:-PokeShare}
|
|
SMTP_SENDER_ADDRESS: ${SMTP_SENDER_ADDRESS:-}
|
|
volumes:
|
|
- pb_data:/pb/pb_data
|
|
healthcheck:
|
|
test: "curl -fsS http://localhost:8090/api/health || exit 1"
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 15s
|
|
|
|
app:
|
|
build: .
|
|
restart: unless-stopped
|
|
environment:
|
|
# Internal service URL — the browser never talks to PocketBase
|
|
# directly, everything goes through the Astro server.
|
|
POCKETBASE_URL: http://pocketbase:8090
|
|
depends_on:
|
|
pocketbase:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
# / redirects to /login (302) — check a 200 endpoint instead
|
|
test: "wget -q -O /dev/null http://localhost:4321/login || exit 1"
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 15s
|
|
|
|
volumes:
|
|
pb_data:
|