This commit is contained in:
Executable
+141
@@ -0,0 +1,141 @@
|
||||
services:
|
||||
# Application
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
target: builder
|
||||
container_name: suggestbet-app-local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '3005:3000'
|
||||
environment:
|
||||
- PORT=3000
|
||||
- NODE_ENV=development
|
||||
- DATABASE_URL=postgresql://suggestbet:SuGGesT2026SecuRe@postgres:5432/boilerplate_db?schema=public
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_PASSWORD=RedisSecure2026
|
||||
- REDIS_ENABLED=true
|
||||
- JWT_SECRET=9bfa42fbdc6031da6d7c0bd30e9f5b6378a071613d0c02acf95eb576249c3a25
|
||||
- JWT_ACCESS_EXPIRATION=15m
|
||||
- JWT_REFRESH_EXPIRATION=7d
|
||||
- DEFAULT_LANGUAGE=en
|
||||
- FALLBACK_LANGUAGE=en
|
||||
- AI_ENGINE_URL=http://ai-engine:8000
|
||||
volumes:
|
||||
- .:/app
|
||||
- /app/node_modules
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
command: /bin/sh -c "apk add --no-cache openssl && npx prisma generate && node dist/src/main.js"
|
||||
networks:
|
||||
- suggestbet-network
|
||||
|
||||
# Frontend (Next.js)
|
||||
frontend:
|
||||
build:
|
||||
context: ../GitHub/Suggest-Bet-FE
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
- NEXT_PUBLIC_API_URL=http://localhost:3005/api
|
||||
container_name: suggestbet-frontend-local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '3001:3000'
|
||||
environment:
|
||||
- NEXT_PUBLIC_API_URL=http://localhost:3005/api
|
||||
depends_on:
|
||||
- app
|
||||
networks:
|
||||
- suggestbet-network
|
||||
|
||||
# PostgreSQL Database
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: suggestbet-postgres-local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '15432:5432' # Host port 15432 mapped to container standard port 5432
|
||||
environment:
|
||||
POSTGRES_USER: suggestbet
|
||||
POSTGRES_PASSWORD: SuGGesT2026SecuRe
|
||||
POSTGRES_DB: boilerplate_db
|
||||
volumes:
|
||||
- ./data/postgres-local:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'pg_isready -U suggestbet -d boilerplate_db']
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- suggestbet-network
|
||||
|
||||
# Redis
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: suggestbet-redis-local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '6379:6379'
|
||||
command: redis-server --requirepass RedisSecure2026
|
||||
volumes:
|
||||
- ./data/redis-local:/data
|
||||
healthcheck:
|
||||
test: ['CMD', 'redis-cli', 'ping']
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- suggestbet-network
|
||||
|
||||
# Adminer (Database UI)
|
||||
adminer:
|
||||
image: adminer:latest
|
||||
container_name: suggestbet-adminer-local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '8080:8080'
|
||||
depends_on:
|
||||
- postgres
|
||||
networks:
|
||||
- suggestbet-network
|
||||
|
||||
# Redis Insight (Redis GUI)
|
||||
redis-insight:
|
||||
image: redis/redisinsight:latest
|
||||
container_name: suggestbet-redis-insight-local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '5540:5540'
|
||||
depends_on:
|
||||
- redis
|
||||
networks:
|
||||
- suggestbet-network
|
||||
|
||||
# AI Engine (Python FastAPI)
|
||||
ai-engine:
|
||||
build:
|
||||
context: ./ai-engine
|
||||
dockerfile: Dockerfile
|
||||
container_name: suggestbet-ai-engine-local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '8000:8000'
|
||||
environment:
|
||||
- DATABASE_URL=postgresql://suggestbet:SuGGesT2026SecuRe@postgres:5432/boilerplate_db?schema=public
|
||||
volumes:
|
||||
- ./ai-engine:/app
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload
|
||||
networks:
|
||||
- suggestbet-network
|
||||
|
||||
networks:
|
||||
suggestbet-network:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user