Files
pg-adx/docker-compose.yml
2026-03-18 16:06:29 +07:00

147 lines
3.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
postgres:
image: postgres:15-alpine
container_name: pg-admin-db
environment:
POSTGRES_USER: ${DB_USER:-postgres}
POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres}
POSTGRES_DB: ${DB_NAME:-pg_admin}
POSTGRES_INITDB_ARGS: "--encoding=UTF8 -c shared_buffers=256MB -c max_connections=100"
# БД НЕ открыта наружу - только для контейнеров
volumes:
- postgres_data:/var/lib/postgresql/data
- ./docker/init-db.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres} -d ${DB_NAME:-pg_admin}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- pg-admin-network
restart: unless-stopped
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
backend:
build:
context: ./backend
dockerfile: ../docker/Dockerfile.backend
container_name: pg-admin-api
environment:
NODE_ENV: ${NODE_ENV:-production}
PORT: ${API_PORT:-3000}
DB_HOST: postgres
DB_PORT: 5432
DB_USER: ${DB_USER:-postgres}
DB_PASSWORD: ${DB_PASSWORD:-postgres}
DB_NAME: ${DB_NAME:-pg_admin}
JWT_SECRET: ${JWT_SECRET:-change_me_in_production}
JWT_EXPIRE: ${JWT_EXPIRE:-7d}
MAX_CONNECTIONS: ${MAX_CONNECTIONS:-20}
LOG_LEVEL: ${LOG_LEVEL:-info}
# API НЕ открыт наружу - только для nginx
depends_on:
postgres:
condition: service_healthy
volumes:
- ./backend/src:/app/src
- ./backend/logs:/app/logs
networks:
- pg-admin-network
restart: unless-stopped
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
frontend:
build:
context: ./frontend
dockerfile: ../docker/Dockerfile.frontend
container_name: pg-admin-ui
environment:
REACT_APP_API_URL: ${FRONTEND_API_URL:-http://localhost:3000/api}
REACT_APP_ENV: ${NODE_ENV:-production}
# Frontend НЕ открыт наружу - только для nginx
depends_on:
- backend
volumes:
- ./frontend/src:/app/src
networks:
- pg-admin-network
restart: unless-stopped
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
redis:
image: redis:7-alpine
container_name: pg-admin-cache
# Redis НЕ открыт наружу - только для контейнеров
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- pg-admin-network
restart: unless-stopped
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
cpus: '0.25'
memory: 128M
nginx:
image: nginx:alpine
container_name: pg-admin-proxy
ports:
- "${NGINX_PORT:-80}:80"
volumes:
- ./docker/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- frontend
- backend
networks:
- pg-admin-network
restart: unless-stopped
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
cpus: '0.25'
memory: 128M
volumes:
postgres_data:
driver: local
redis_data:
driver: local
networks:
pg-admin-network:
driver: bridge