Init project
This commit is contained in:
179
docker/docker-compose.yml
Normal file
179
docker/docker-compose.yml
Normal file
@@ -0,0 +1,179 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Core Service (Go)
|
||||
core-service:
|
||||
build:
|
||||
context: ./core-service
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- SERVER_HOST=0.0.0.0
|
||||
- SERVER_PORT=8080
|
||||
- DB_HOST=postgres
|
||||
- DB_PORT=5432
|
||||
- DB_USER=erp_user
|
||||
- DB_PASSWORD=erp_pass
|
||||
- DB_NAME=erp_mvp
|
||||
- DB_SSLMODE=disable
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_PASSWORD=
|
||||
- REDIS_DB=0
|
||||
- JWT_SECRET=your-super-secret-jwt-key-change-in-production
|
||||
- JWT_EXPIRATION=24
|
||||
- DOC_SERVICE_URL=http://doc-service:8000
|
||||
- LOG_LEVEL=info
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
|
||||
# Document Service (Python)
|
||||
doc-service:
|
||||
build:
|
||||
context: ./doc-service
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
- HOST=0.0.0.0
|
||||
- PORT=8000
|
||||
- DEBUG=false
|
||||
- LOG_LEVEL=INFO
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_PASSWORD=
|
||||
- REDIS_DB=1
|
||||
- CORE_SERVICE_URL=http://core-service:8080
|
||||
- DOCUMENTS_CACHE_TTL=86400
|
||||
- MAX_DOCUMENT_SIZE=10485760
|
||||
- TEMPLATES_DIR=/app/templates
|
||||
- OUTPUT_DIR=/app/output
|
||||
- QR_CODE_SIZE=10
|
||||
- QR_CODE_BORDER=2
|
||||
volumes:
|
||||
- doc_templates:/app/templates
|
||||
- doc_output:/app/output
|
||||
depends_on:
|
||||
- redis
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
|
||||
# Frontend (Angular)
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "3000:80"
|
||||
environment:
|
||||
- API_URL=http://localhost:8080
|
||||
- DOC_SERVICE_URL=http://localhost:8000
|
||||
depends_on:
|
||||
- core-service
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
|
||||
# Database (PostgreSQL)
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
- POSTGRES_DB=erp_mvp
|
||||
- POSTGRES_USER=erp_user
|
||||
- POSTGRES_PASSWORD=erp_pass
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
- ./docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
|
||||
# Cache (Redis)
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
command: redis-server --appendonly yes
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
|
||||
# API Gateway (Traefik) - опционально
|
||||
traefik:
|
||||
image: traefik:v2.10
|
||||
command:
|
||||
- --api.insecure=true
|
||||
- --providers.docker=true
|
||||
- --providers.docker.exposedbydefault=false
|
||||
- --entrypoints.web.address=:80
|
||||
- --entrypoints.websecure.address=:443
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "8081:8080"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- gateway
|
||||
|
||||
# Monitoring (Prometheus)
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- ./docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
- prometheus_data:/prometheus
|
||||
command:
|
||||
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||
- '--storage.tsdb.path=/prometheus'
|
||||
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
||||
- '--web.console.templates=/etc/prometheus/consoles'
|
||||
- '--storage.tsdb.retention.time=200h'
|
||||
- '--web.enable-lifecycle'
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- monitoring
|
||||
|
||||
# Monitoring (Grafana)
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
ports:
|
||||
- "3001:3000"
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_PASSWORD=admin
|
||||
volumes:
|
||||
- grafana_data:/var/lib/grafana
|
||||
- ./docker/grafana/provisioning:/etc/grafana/provisioning
|
||||
networks:
|
||||
- erp-network
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- monitoring
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
redis_data:
|
||||
doc_templates:
|
||||
doc_output:
|
||||
prometheus_data:
|
||||
grafana_data:
|
||||
|
||||
networks:
|
||||
erp-network:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user