Hello all.
I have a problem connecting to a postgresql database running inside a docker stack. I am getting this error:
Datasource “db”: PostgreSQL database “postgres”, schema “public” at “localhost:5432”
Error: P1001: Can’t reach database server at `localhost:5432`
Please make sure your database server is running at `localhost:5432`.
My docker-compose is:
services:
postgres:
container_name: linkwarden-postgres
image: postgres:16-alpine
ports:
- ${POSTGRES_PORT}:5432
volumes:
- ${DATA_DIR}/linkwarden/postgres:/var/lib/postgresql/data
environment:
- TZ=${TZ}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_DB=${POSTGRES_DB}
restart: unless-stopped
linkwarden:
container_name: linkwarden
image: ghcr.io/linkwarden/linkwarden:latest
ports:
- ${PORT}:3000
volumes:
- ${DATA_DIR}/linkwarden/data:/data/data
depends_on:
- postgres
environment:
- TZ=${TZ}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_DB=${POSTGRES_DB}
- NEXTAUTH_URL=http://localhost:3000/api/v1/auth
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?schema=${POSTGRES_SCHEMA}
restart: unless-stopped
Relevant environment variables are:
POSTGRES_USER=postgres
POSTGRES_PASSWORD=*redacted
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=postgres
POSTGRES_SCHEMA=public
I have tried to switch from host “localhost”, to “0.0.0.0”, “172.19.0.24” (internal docker IP), “postgres”, “linkwarden-postgres”, etc., to no avail.
I bashed into the postgresql container and checked both user and database exists:
7373145f2d75:/# psql -U postgres
psql (16.11)
Type "help" for help.
postgres-# \l
List of databases
Name | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges
-----------+----------+----------+-----------------+------------+------------+------------+-----------+-----------------------
postgres | postgres | UTF8 | libc | en_US.utf8 | en_US.utf8 | | |
How can I troubleshoot?
Thanks in advance.