refactor: migrate environment variables to .env file and update config.py

- Replace environment section in docker-compose.yml with env_file directive
- Add all missing environment variables to config.py
- Update env.example with proper variable definitions
- Create .env file from env.example
- Ensure all variables are properly loaded from .env file
This commit is contained in:
Сергей Антропов 2025-08-20 17:52:50 +03:00
parent f5926b80ad
commit 9ecfb9f360
3 changed files with 41 additions and 70 deletions

View File

@ -21,6 +21,7 @@ HEALTH_CHECK_TIMEOUT = int(os.getenv("LOGBOARD_HEALTH_CHECK_TIMEOUT", "2"))
# Настройки безопасности
SECRET_KEY = os.getenv("SECRET_KEY", "your-secret-key-here-change-in-production")
ENCRYPTION_KEY = os.getenv("ENCRYPTION_KEY", "your-encryption-key-here-change-in-production")
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("SESSION_TIMEOUT", "3600")) // 60 # 1 час по умолчанию
@ -40,3 +41,38 @@ templates = Jinja2Templates(directory="app/templates")
# Директории
SNAP_DIR = os.getenv("LOGBOARD_SNAPSHOT_DIR", "./snapshots")
STATIC_DIR = os.getenv("LOGBOARD_STATIC_DIR", "./app/static")
INDEX_HTML = os.getenv("LOGBOARD_INDEX_HTML", "./app/templates/index.html")
# Настройки веб-интерфейса
WEB_TITLE = os.getenv("WEB_TITLE", "LogBoard+")
WEB_DESCRIPTION = os.getenv("WEB_DESCRIPTION", "Веб-панель для просмотра логов микросервисов")
WEB_VERSION = os.getenv("WEB_VERSION", "1.0.0")
# Настройки производительности
MAX_CONNECTIONS = int(os.getenv("MAX_CONNECTIONS", "100"))
CONNECTION_TIMEOUT = int(os.getenv("CONNECTION_TIMEOUT", "30"))
READ_TIMEOUT = int(os.getenv("READ_TIMEOUT", "60"))
# Настройки аутентификации
AUTH_ENABLED = os.getenv("AUTH_ENABLED", "true").lower() == "true"
AUTH_METHOD = os.getenv("AUTH_METHOD", "jwt")
# Настройки уведомлений
NOTIFICATIONS_ENABLED = os.getenv("NOTIFICATIONS_ENABLED", "false").lower() == "true"
SMTP_HOST = os.getenv("SMTP_HOST", "")
SMTP_PORT = int(os.getenv("SMTP_PORT", "587"))
SMTP_USER = os.getenv("SMTP_USER", "")
SMTP_PASS = os.getenv("SMTP_PASS", "")
SMTP_FROM = os.getenv("SMTP_FROM", "")
# Настройки Docker
DOCKER_HOST = os.getenv("DOCKER_HOST", "unix:///var/run/docker.sock")
DOCKER_TLS_VERIFY = os.getenv("DOCKER_TLS_VERIFY", "")
DOCKER_CERT_PATH = os.getenv("DOCKER_CERT_PATH", "")
DOCKER_NETWORKS = os.getenv("DOCKER_NETWORKS", "iaas,infrastructure_iaas")
# Настройки логирования
LOG_FORMAT = os.getenv("LOG_FORMAT", "json")
# Временная зона
TZ_TS = os.getenv("TZ_TS", "Europe/Moscow")

View File

@ -2,82 +2,20 @@ services:
logboard:
build: .
container_name: logboard
environment:
# Основные настройки приложения
LOGBOARD_PORT: ${LOGBOARD_PORT:-9001}
LOGBOARD_TAIL: ${LOGBOARD_TAIL:-500}
LOGBOARD_USER: ${LOGBOARD_USER:-admin}
LOGBOARD_PASS: ${LOGBOARD_PASS:-admin}
LOGBOARD_PROJECTS: ${LOGBOARD_PROJECTS:-}
LOGBOARD_SNAPSHOT_DIR: ${LOGBOARD_SNAPSHOT_DIR:-/app/snapshots}
LOGBOARD_INDEX_HTML: ${LOGBOARD_INDEX_HTML:-./templates/index.html}
TZ_TS: ${TZ_TS:-Europe/Moscow}
# Настройки безопасности
SECRET_KEY: ${SECRET_KEY:-your-secret-key-here}
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-your-encryption-key-here}
# Настройки логирования
LOG_LEVEL: ${LOG_LEVEL:-INFO}
LOG_FORMAT: ${LOG_FORMAT:-json}
# Настройки веб-интерфейса
WEB_TITLE: ${WEB_TITLE:-LogBoard+}
WEB_DESCRIPTION: ${WEB_DESCRIPTION:-Веб-панель для просмотра логов микросервисов}
WEB_VERSION: ${WEB_VERSION:-1.0.0}
# Настройки производительности
MAX_CONNECTIONS: ${MAX_CONNECTIONS:-100}
CONNECTION_TIMEOUT: ${CONNECTION_TIMEOUT:-30}
READ_TIMEOUT: ${READ_TIMEOUT:-60}
# Настройки аутентификации
AUTH_ENABLED: ${AUTH_ENABLED:-true}
AUTH_METHOD: ${AUTH_METHOD:-jwt}
SESSION_TIMEOUT: ${SESSION_TIMEOUT:-3600}
# Настройки уведомлений
NOTIFICATIONS_ENABLED: ${NOTIFICATIONS_ENABLED:-false}
SMTP_HOST: ${SMTP_HOST:-}
SMTP_PORT: ${SMTP_PORT:-587}
SMTP_USER: ${SMTP_USER:-}
SMTP_PASS: ${SMTP_PASS:-}
SMTP_FROM: ${SMTP_FROM:-}
# Настройки Docker
DOCKER_HOST: ${DOCKER_HOST:-unix:///var/run/docker.sock}
DOCKER_TLS_VERIFY: ${DOCKER_TLS_VERIFY:-}
DOCKER_CERT_PATH: ${DOCKER_CERT_PATH:-}
DOCKER_NETWORKS: ${DOCKER_NETWORKS:-iaas,infrastructure_iaas}
# Настройки фильтрации контейнеров
LOGBOARD_SKIP_UNHEALTHY: ${LOGBOARD_SKIP_UNHEALTHY:-true}
LOGBOARD_CONTAINER_LIST_TIMEOUT: ${LOGBOARD_CONTAINER_LIST_TIMEOUT:-10}
LOGBOARD_CONTAINER_INFO_TIMEOUT: ${LOGBOARD_CONTAINER_INFO_TIMEOUT:-3}
LOGBOARD_HEALTH_CHECK_TIMEOUT: ${LOGBOARD_HEALTH_CHECK_TIMEOUT:-2}
# Настройки AJAX обновления
LOGBOARD_AJAX_UPDATE_INTERVAL: ${LOGBOARD_AJAX_UPDATE_INTERVAL:-2000}
# Настройки режима отладки
DEBUG_MODE: ${DEBUG_MODE:-false}
env_file:
- .env
ports:
- "${LOGBOARD_PORT:-9001}:${LOGBOARD_PORT:-9001}"
- "${LOGBOARD_PORT}:${LOGBOARD_PORT}"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./snapshots:/app/snapshots
- ./:/app
restart: unless-stopped
user: 0:0
networks:
- iaas
- infrastructure_iaas
networks:
iaas:
external: true

View File

@ -37,12 +37,12 @@ TZ_TS=Europe/Moscow
# Фильтр по проекту Docker Compose (опционально)
# Если указано, будут показаны только контейнеры из этого проекта
# COMPOSE_PROJECT_NAME=myproj
COMPOSE_PROJECT_NAME=myproj
# Настройки множественных проектов
# Укажите проекты через запятую для отображения контейнеров из нескольких проектов
# Если не указано или пустое значение - показываются ВСЕ контейнеры из всех проектов
# LOGBOARD_PROJECTS=project1,project2,project3
LOGBOARD_PROJECTS=
# Путь к Docker socket для подключения к Docker daemon
DOCKER_HOST=unix:///var/run/docker.sock
@ -102,9 +102,6 @@ WEB_VERSION=1.0.0
# В продакшене обязательно установите в false
DEBUG_MODE=false
# Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
LOG_LEVEL=INFO
# =============================================================================
# НАСТРОЙКИ ПРОИЗВОДИТЕЛЬНОСТИ
# =============================================================================