Docker Compose for Rails + PostgreSQL + Redis
Ruby on Rails with PostgreSQL and Redis for Action Cable, caching, or Sidekiq.
ruby rails postgres redis fullstack
compose.yaml
services:
web:
build: .
command: bundle exec rails server -b 0.0.0.0 -p 3000
ports:
- target: 3000
mode: ingress
environment:
- DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/rails
- REDIS_URL=redis://redis:6379/0
- RAILS_ENV=production
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
healthcheck:
test:
- CMD
- curl
- -f
- http://localhost:3000/
interval: 30s
timeout: 5s
retries: 3
depends_on:
- db
- redis
deploy:
resources:
reservations:
cpus: "0.5"
memory: 256M
restart: unless-stopped
db:
image: postgres:16
ports:
- target: 5432
mode: host
environment:
- POSTGRES_DB=rails
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
healthcheck:
test:
- CMD-SHELL
- pg_isready -U postgres
interval: 10s
timeout: 5s
retries: 5
deploy:
resources:
reservations:
cpus: "0.5"
memory: 256M
restart: unless-stopped
x-defang-postgres: true
redis:
image: redis:7-alpine
ports:
- target: 6379
mode: host
healthcheck:
test:
- CMD
- redis-cli
- ping
interval: 10s
timeout: 5s
retries: 5
deploy:
resources:
reservations:
cpus: "0.5"
memory: 256M
restart: unless-stopped
x-defang-redis: true
Services
- web .
- db postgres:16
- redis redis:7-alpine