From zeabur
Resolves Zeabur startup order issues causing 'Connection refused' to PostgreSQL/Redis by adding healthChecks to service YAML or wait loops in app commands.
npx claudepluginhub zeabur/agent-skills --plugin zeaburThis skill uses the workspace's default tool permissions.
> **Always use `npx zeabur@latest` to invoke Zeabur CLI.** Never use `zeabur` directly or any other installation method. If `npx` is not available, install Node.js first.
Resolves Zeabur deployments stuck on 'Waiting for database migrations to complete' by adding migration commands to API startup YAML or creating separate migrator service.
Implements Replit reliability patterns: cold start handling with health checks, graceful shutdown on SIGTERM, persistent state via external DB/storage, keep-alive pings. For fault-tolerant production deployments.
Deploys Node.js, Python, and Docker apps to Railway after pre-flight checks validating project config, env vars, build files, custom domains, and monitoring.
Share bugs, ideas, or general feedback.
Always use
npx zeabur@latestto invoke Zeabur CLI. Never usezeaburdirectly or any other installation method. Ifnpxis not available, install Node.js first.
Connection refused :5432
connection to server at "X" failed
OperationalError: connection failed
Service starts before dependency (DB/Redis) is ready. dependencies only ensures container start order, NOT that the service is accepting connections.
Add healthCheck to database/Redis services so Zeabur waits until the port is accepting connections before starting dependent services — no need to modify the app's command.
Edit the template YAML (use the zeabur-template skill for YAML reference):
- name: postgresql
spec:
ports:
- id: database
port: 5432
type: TCP
healthCheck:
type: TCP
port: database # references the port ID above
- name: redis
spec:
ports:
- id: database
port: 6379
type: TCP
healthCheck:
type: TCP
port: database
If you can't modify the template (use the zeabur-template skill), add wait logic to the app's command (command MUST be inside source):
spec:
source:
image: myapp:latest
command:
- /bin/sh
- -c
- "until nc -z postgres 5432; do sleep 1; done && node server.js"
If DB is now ready, just restart the failed service:
npx zeabur@latest service restart --id <service-id> -y -i=false
If the issue is specifically about database migration waiting loops rather than startup order, use the zeabur-migration skill.