https://github.com/mxssl/wait-for-pg
Check if PostgreSQL database is ready
https://github.com/mxssl/wait-for-pg
go golang postgres postgresql
Last synced: 23 days ago
JSON representation
Check if PostgreSQL database is ready
- Host: GitHub
- URL: https://github.com/mxssl/wait-for-pg
- Owner: mxssl
- License: apache-2.0
- Created: 2019-11-08T20:20:33.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2026-03-14T23:32:19.000Z (3 months ago)
- Last Synced: 2026-03-15T09:31:10.012Z (3 months ago)
- Topics: go, golang, postgres, postgresql
- Language: Go
- Homepage:
- Size: 277 KB
- Stars: 25
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# wait-for-pg
Simple app that checks if PostgreSQL database is ready or not.
## Install and usage
### Option 1: binary
```sh
wget https://github.com/mxssl/wait-for-pg/releases/download/v1.0.6/wait-for-pg-linux-amd64.tar.gz
tar xvzf wait-for-pg-linux-amd64.tar.gz
mv wait-for-pg /usr/local/bin/wait-for-pg
chmod +x /usr/local/bin/wait-for-pg
rm wait-for-pg-linux-amd64.tar.gz
wait-for-pg check \
--host postgres.domain.com \
--port 5432 \
--user pguser \
--password pgpass \
--dbname dbname \
--sslmode disable \
--retry 10 \
--sleep 2
```
### Option 2: docker container
```sh
docker container \
run \
--rm \
mxssl/wait-for-pg:v1.0.6 \
wait-for-pg check \
--host postgres.domain.com \
--port 5432 \
--user pguser \
--password pgpass \
--dbname dbname \
--sslmode disable \
--retry 10 \
--sleep 2
```
- If PG is ready then app returns exit code 0
- If PG isn't ready then app returns exit code 1
### Option 3: Kubernetes init container
Use `wait-for-pg` as an init container to delay your application startup until PostgreSQL is ready.
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
initContainers:
- name: wait-for-pg
image: mxssl/wait-for-pg:v1.0.6
command:
- wait-for-pg
- check
- --host
- postgres-service
- --port
- "5432"
- --user
- pguser
- --password
- pgpass
- --dbname
- dbname
- --sslmode
- disable
- --retry
- "30"
- --sleep
- "2"
containers:
- name: myapp
image: myapp:latest
```
Using environment variables from a Secret:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: pg-credentials
type: Opaque
stringData:
PGHOST: postgres-service
PGPORT: "5432"
PGUSER: pguser
PGPASSWORD: pgpass
PGDATABASE: dbname
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
initContainers:
- name: wait-for-pg
image: mxssl/wait-for-pg:v1.0.6
command: ["sh", "-c"]
args:
- >
wait-for-pg check
--host $(PGHOST)
--port $(PGPORT)
--user $(PGUSER)
--password $(PGPASSWORD)
--dbname $(PGDATABASE)
--sslmode disable
--retry 30
--sleep 2
envFrom:
- secretRef:
name: pg-credentials
containers:
- name: myapp
image: myapp:latest
envFrom:
- secretRef:
name: pg-credentials
```