87 lines
1.9 KiB
YAML
87 lines
1.9 KiB
YAML
|
|
version: '3.8'
|
||
|
|
|
||
|
|
services:
|
||
|
|
# PostgreSQL Database
|
||
|
|
postgres:
|
||
|
|
image: postgres:15-alpine
|
||
|
|
container_name: nestjs-postgres
|
||
|
|
restart: unless-stopped
|
||
|
|
environment:
|
||
|
|
POSTGRES_DB: nestjs_user_crud
|
||
|
|
POSTGRES_USER: postgres
|
||
|
|
POSTGRES_PASSWORD: postgres
|
||
|
|
ports:
|
||
|
|
- "5432:5432"
|
||
|
|
volumes:
|
||
|
|
- postgres_data:/var/lib/postgresql/data
|
||
|
|
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
|
||
|
|
networks:
|
||
|
|
- nestjs-network
|
||
|
|
|
||
|
|
# Redis for caching (optional)
|
||
|
|
redis:
|
||
|
|
image: redis:7-alpine
|
||
|
|
container_name: nestjs-redis
|
||
|
|
restart: unless-stopped
|
||
|
|
ports:
|
||
|
|
- "6379:6379"
|
||
|
|
volumes:
|
||
|
|
- redis_data:/data
|
||
|
|
networks:
|
||
|
|
- nestjs-network
|
||
|
|
|
||
|
|
# NestJS Application
|
||
|
|
app:
|
||
|
|
build:
|
||
|
|
context: .
|
||
|
|
dockerfile: Dockerfile
|
||
|
|
target: production
|
||
|
|
container_name: nestjs-app
|
||
|
|
restart: unless-stopped
|
||
|
|
ports:
|
||
|
|
- "3000:3000"
|
||
|
|
environment:
|
||
|
|
NODE_ENV: development
|
||
|
|
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/nestjs_user_crud?schema=public
|
||
|
|
JWT_SECRET: docker-jwt-secret-key
|
||
|
|
JWT_EXPIRES_IN: 7d
|
||
|
|
API_PREFIX: api/v1
|
||
|
|
API_VERSION: 1.0.0
|
||
|
|
THROTTLE_TTL: 60
|
||
|
|
THROTTLE_LIMIT: 10
|
||
|
|
CORS_ORIGIN: http://localhost:3000
|
||
|
|
depends_on:
|
||
|
|
- postgres
|
||
|
|
- redis
|
||
|
|
networks:
|
||
|
|
- nestjs-network
|
||
|
|
volumes:
|
||
|
|
- ./src:/app/src
|
||
|
|
- ./prisma:/app/prisma
|
||
|
|
|
||
|
|
# Prisma Studio
|
||
|
|
prisma-studio:
|
||
|
|
image: node:18-alpine
|
||
|
|
container_name: nestjs-prisma-studio
|
||
|
|
restart: unless-stopped
|
||
|
|
ports:
|
||
|
|
- "5555:5555"
|
||
|
|
environment:
|
||
|
|
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/nestjs_user_crud?schema=public
|
||
|
|
working_dir: /app
|
||
|
|
volumes:
|
||
|
|
- .:/app
|
||
|
|
command: sh -c "npm install && npx prisma generate && npx prisma studio --hostname 0.0.0.0"
|
||
|
|
depends_on:
|
||
|
|
- postgres
|
||
|
|
networks:
|
||
|
|
- nestjs-network
|
||
|
|
|
||
|
|
volumes:
|
||
|
|
postgres_data:
|
||
|
|
redis_data:
|
||
|
|
|
||
|
|
networks:
|
||
|
|
nestjs-network:
|
||
|
|
driver: bridge
|