Careeroza
docker-compose with PostgreSQL and Redis
The Whole Stack Locally
docker-compose.yml
services:
api:
build: .
ports: ["3000:3000"]
env_file: .env.docker
depends_on:
db: { condition: service_healthy }
redis: { condition: service_started }
command: sh -c "npx prisma migrate deploy && node dist/main.js"
db:
image: postgres:16
environment:
POSTGRES_USER: shopease
POSTGRES_PASSWORD: secret
POSTGRES_DB: shopease
volumes: ["pgdata:/var/lib/postgresql/data"]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U shopease"]
interval: 5s
retries: 10
redis:
image: redis:7-alpine
volumes:
pgdata:Example
docker compose up -d --build
docker compose psExample output
[+] Running 4/4 ✔ Network shopease_default Created ✔ Container shopease-db-1 Healthy ✔ Container shopease-redis-1 Started ✔ Container shopease-api-1 Started NAME IMAGE STATUS PORTS shopease-api-1 shopease-api Up 8 seconds (healthy) 0.0.0.0:3000->3000/tcp shopease-db-1 postgres:16 Up 15 seconds (healthy) 5432/tcp shopease-redis-1 redis:7-alpine Up 15 seconds 6379/tcp
Note: Inside compose, services reach each other by name: DATABASE_URL=postgresql://shopease:secret@db:5432/shopease, REDIS_URL=redis://redis:6379.