- Published on
Setup Postgres Database in Docker Container for Development
- Authors
- Saad Bash
docker-compose.yml
for Postgres
services:
db:
image: postgres:17.0
hostname: ${DB_HOST}
ports:
- '5432:${DB_PORT}'
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_NAME}
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
.env
file
DATABASE_URL=postgresql://postgres:password@localhost:5432/main
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=password
DB_NAME=main
Commands to run
docker-compose up -d
Connect to Postgres
psql -h localhost -p 5432 -U postgres -d postgres
Example JavaScript file to test connection
// file: index.mjs
import { Client } from 'pg'
const client = new Client({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
})
client
.connect()
.then(() => console.log('Connected to Postgres'))
.catch((err) => console.error('Connection error:', err.stack))
.finally(() => client.end())
To run the file, use:
node --env-file .env index.mjs
Stop and remove container
docker-compose down -v
Notes
- The
-v
flag in thedocker-compose down
command removes the named volumepgdata
, which deletes all the data stored in the Postgres database. Use this with caution if you want to keep your data.