Files
webclone/docker-compose.yml
T
2025-12-25 12:02:07 -03:00

98 lines
2.2 KiB
YAML

version: '3.8'
services:
# PostgreSQL Database
postgres:
image: postgres:15-alpine
container_name: cloneweb-postgres
environment:
POSTGRES_DB: cloneweb
POSTGRES_USER: cloneweb_user
POSTGRES_PASSWORD: cloneweb_password
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./services/database/init:/docker-entrypoint-initdb.d
networks:
- cloneweb-network
# Redis for caching and job queues
redis:
image: redis:7-alpine
container_name: cloneweb-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- cloneweb-network
# MinIO for S3-compatible storage (development)
minio:
image: minio/minio:latest
container_name: cloneweb-minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: cloneweb_access_key
MINIO_ROOT_PASSWORD: cloneweb_secret_key
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
networks:
- cloneweb-network
# API Gateway
api-gateway:
build:
context: .
dockerfile: services/api-gateway/Dockerfile
container_name: cloneweb-api-gateway
ports:
- "3000:3000"
environment:
NODE_ENV: development
DATABASE_URL: postgresql://cloneweb_user:cloneweb_password@postgres:5432/cloneweb
REDIS_URL: redis://redis:6379
MINIO_ENDPOINT: minio:9000
MINIO_ACCESS_KEY: cloneweb_access_key
MINIO_SECRET_KEY: cloneweb_secret_key
depends_on:
- postgres
- redis
- minio
networks:
- cloneweb-network
volumes:
- ./services/api-gateway:/app
- /app/node_modules
# Crawler Service
crawler-service:
build:
context: .
dockerfile: services/crawler/Dockerfile
container_name: cloneweb-crawler
environment:
NODE_ENV: development
DATABASE_URL: postgresql://cloneweb_user:cloneweb_password@postgres:5432/cloneweb
REDIS_URL: redis://redis:6379
depends_on:
- postgres
- redis
networks:
- cloneweb-network
volumes:
- ./services/crawler:/app
- /app/node_modules
volumes:
postgres_data:
redis_data:
minio_data:
networks:
cloneweb-network:
driver: bridge