/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
docker-compose.yml
151 строка
6 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
services: db: container_name: gridient.db image: postgres:15 environment: POSTGRES_USER: admin POSTGRES_PASSWORD: P@ssw0rd # Используем postgres как основную БД для выполнения init скриптов # Скрипты сами создадут gridient_db и gridient_authentication POSTGRES_DB: postgres ports: - "5433:5432" volumes: - pgdata:/var/lib/postgresql/data - ./db/PostgreSQL:/docker-entrypoint-initdb.d:ro networks: - gridient healthcheck: test: ["CMD-SHELL", "pg_isready -U admin -d gridient_db"] interval: 5s timeout: 5s retries: 5 # Создание отдельной БД для auth при инициализации command: > postgres -c shared_preload_libraries=pg_stat_statements -c max_connections=200 -c shared_buffers=256MB -c effective_cache_size=1GB -c maintenance_work_mem=64MB -c checkpoint_completion_target=0.9 -c wal_buffers=16MB -c default_statistics_target=100 -c random_page_cost=1.1 -c effective_io_concurrency=200 -c work_mem=4MB -c min_wal_size=1GB -c max_wal_size=4GB backend: container_name: gridient.api build: context: ./backend dockerfile: Dockerfile ports: - "${BACKEND_HOST_PORT:-5285}:${BACKEND_PORT:-5285}" networks: - gridient # Если PostgreSQL запускается отдельно (docker-compose-postgre-db-only.yml), # закомментируйте depends_on и задайте переменные окружения: # DB_HOST=host.docker.internal DB_PORT=5433 depends_on: db: condition: service_healthy environment: - ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development} - BACKEND_PORT=${BACKEND_PORT:-5285} - ConnectionStrings__Lists=Host=${DB_HOST:-db};Port=${DB_PORT:-5432};Database=gridient_db;Username=${DB_USER:-admin};Password=${DB_PASSWORD:-P@ssw0rd};Pooling=true;TrustServerCertificate=true - ConnectionStrings__Auth=Host=${DB_HOST:-db};Port=${DB_PORT:-5432};Database=gridient_authentication;Username=${DB_USER:-admin};Password=${DB_PASSWORD:-P@ssw0rd};Pooling=true;TrustServerCertificate=true - ConnectionStrings__Authorization=Host=${DB_HOST:-db};Port=${DB_PORT:-5432};Database=gridient_authorization;Username=${DB_USER:-admin};Password=${DB_PASSWORD:-P@ssw0rd};Pooling=true;TrustServerCertificate=true - Oidc__Authority=${OIDC_AUTHORITY:-} - Oidc__ClientId=${OIDC_CLIENT_ID:-} - Oidc__ClientSecret=${OIDC_CLIENT_SECRET:-} - Oidc__ResponseType=${OIDC_RESPONSE_TYPE:-code} - Oidc__Scope=${OIDC_SCOPE:-openid profile email} - Oidc__GetClaimsFromUserInfoEndpoint=${OIDC_GET_CLAIMS_FROM_USERINFO:-true} - Oidc__SaveTokens=${OIDC_SAVE_TOKENS:-true} - Registration__EnablePublicSignup=${Registration__EnablePublicSignup:-true} - Registration__EnableAdminCreation=${Registration__EnableAdminCreation:-true} frontend: container_name: gridient.ui build: context: ./frontend dockerfile: Dockerfile ports: - "${FRONTEND_HTTPS_PORT:-443}:443" - "${FRONTEND_HTTP_PORT:-80}:80" networks: - gridient depends_on: - backend volumes: - ./nginx/ssl:/etc/nginx/ssl:ro # Монтируем SSL сертификаты # Elasticsearch для хранения трассировки elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.17 container_name: elasticsearch environment: - discovery.type=single-node # Запуск в режиме одного узла (для разработки) - ES_JAVA_OPTS=-Xms1g -Xmx1g # Устанавливаем лимит оперативной памяти - xpack.security.enabled=false # Отключаем безопасность (auth, TLS) ports: - "9200:9200" # Порт для HTTP API Elasticsearch networks: - gridient # Подключение к общей сети healthcheck: test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health || exit 1"] interval: 10s timeout: 5s retries: 12 # Jaeger для трассировки jaeger: image: jaegertracing/all-in-one:latest container_name: jaeger environment: - SPAN_STORAGE_TYPE=elasticsearch # Хранить спаны в Elasticsearch - ES_SERVER_URLS=http://elasticsearch:9200 # URL Elasticsearch-сервера - ES_VERSION=7 # Используемая версия ES - ES_INDEX_PREFIX=jaeger # Префикс для индексов в ES - ES_TAGS_AS_FIELDS_ALL=true # Теги span'ов сохранять как отдельные поля (удобно для поиска) - ES_MAX_AGE=168h # Удалять всё старше 7 дней (168 часов) ports: - "16686:16686" # Веб-интерфейс Jaeger (http://localhost:16686) - "4317:4317" # OTLP gRPC входящий порт (для клиентов, отправляющих трассировки) depends_on: elasticsearch: condition: service_healthy restart: on-failure networks: - gridient # Prometheus для сбора метрик prometheus: image: prom/prometheus:latest container_name: prometheus ports: - "9090:9090" # Веб-интерфейс Prometheus (http://localhost:9090) networks: - gridient volumes: - prometheus_data:/prometheus # Хранилище метрик (на volume) - ./prometheus.yml:/etc/prometheus/prometheus.yml # Основной конфиг Prometheus command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--storage.tsdb.retention.time=7d" # Хранить метрики 7 дней - "--storage.tsdb.retention.size=10GB" # Ограничить объём хранилища 10ГБ restart: unless-stopped volumes: pgdata: prometheus_data: networks: gridient: driver: bridge