fix: решена проблема с правами доступа к Docker socket
- Обновлен docker-compose.yml с настройками пользователя и группы docker - Обновлен Dockerfile для добавления пользователя в группу docker - Создан docker-compose.root.yml для запуска с правами root - Добавлены команды make up-root и make down-root - Обновлен env.example с дополнительными переменными Docker - Добавлена документация по решению проблем с правами доступа - Теперь приложение корректно подключается к Docker daemon - Автор: Сергей Антропов (https://devops.org.ru)
This commit is contained in:
10
Dockerfile
10
Dockerfile
@@ -8,8 +8,14 @@ RUN pip install --no-cache-dir fastapi uvicorn[standard] docker
|
||||
COPY app.py /app/app.py
|
||||
COPY templates /app/templates
|
||||
|
||||
# Non-root
|
||||
RUN useradd -m appuser
|
||||
# Создаем пользователя и добавляем в группу docker
|
||||
RUN useradd -m appuser && \
|
||||
groupadd -g 999 docker || true && \
|
||||
usermod -a -G docker appuser
|
||||
|
||||
# Создаем директорию для снимков
|
||||
RUN mkdir -p /app/snapshots && chown -R appuser:appuser /app
|
||||
|
||||
USER appuser
|
||||
|
||||
EXPOSE 9001
|
||||
|
||||
39
Makefile
39
Makefile
@@ -2,7 +2,7 @@
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
.PHONY: help setup build up down restart logs clean status ps shell
|
||||
.PHONY: help setup build up down restart logs clean status ps shell up-root down-root
|
||||
|
||||
# Переменные
|
||||
COMPOSE_FILE = docker-compose.yml
|
||||
@@ -41,47 +41,47 @@ setup: ## Настроить переменные окружения (копир
|
||||
|
||||
build: ## Собрать Docker образ
|
||||
@echo "$(GREEN)Сборка Docker образа...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) build --no-cache
|
||||
docker compose -f $(COMPOSE_FILE) build --no-cache
|
||||
@echo "$(GREEN)Образ собран успешно!$(NC)"
|
||||
|
||||
up: ## Запустить сервисы в фоновом режиме
|
||||
@echo "$(GREEN)Запуск сервисов...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) up -d
|
||||
docker compose -f $(COMPOSE_FILE) up -d
|
||||
@echo "$(GREEN)Сервисы запущены!$(NC)"
|
||||
@echo "$(YELLOW)Приложение доступно по адресу: http://localhost:9001$(NC)"
|
||||
|
||||
down: ## Остановить и удалить сервисы
|
||||
@echo "$(YELLOW)Остановка сервисов...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) down
|
||||
docker compose -f $(COMPOSE_FILE) down
|
||||
@echo "$(GREEN)Сервисы остановлены!$(NC)"
|
||||
|
||||
restart: ## Перезапустить сервисы
|
||||
@echo "$(YELLOW)Перезапуск сервисов...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) restart
|
||||
docker compose -f $(COMPOSE_FILE) restart
|
||||
@echo "$(GREEN)Сервисы перезапущены!$(NC)"
|
||||
|
||||
logs: ## Показать логи сервисов
|
||||
@echo "$(GREEN)Логи сервисов:$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) logs -f
|
||||
docker compose -f $(COMPOSE_FILE) logs -f
|
||||
|
||||
logs-tail: ## Показать последние 100 строк логов
|
||||
@echo "$(GREEN)Последние 100 строк логов:$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) logs --tail=100
|
||||
docker compose -f $(COMPOSE_FILE) logs --tail=100
|
||||
|
||||
clean: ## Остановить сервисы и удалить образы
|
||||
@echo "$(RED)Очистка проекта...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) down --rmi all --volumes --remove-orphans
|
||||
docker compose -f $(COMPOSE_FILE) down --rmi all --volumes --remove-orphans
|
||||
@echo "$(GREEN)Очистка завершена!$(NC)"
|
||||
|
||||
status: ## Показать статус сервисов
|
||||
@echo "$(GREEN)Статус сервисов:$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) ps
|
||||
docker compose -f $(COMPOSE_FILE) ps
|
||||
|
||||
ps: status ## Алиас для команды status
|
||||
|
||||
shell: ## Подключиться к контейнеру сервиса
|
||||
@echo "$(GREEN)Подключение к контейнеру $(SERVICE_NAME)...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) exec $(SERVICE_NAME) /bin/bash
|
||||
docker compose -f $(COMPOSE_FILE) exec $(SERVICE_NAME) /bin/bash
|
||||
|
||||
start: up ## Алиас для команды up
|
||||
|
||||
@@ -89,12 +89,23 @@ stop: down ## Алиас для команды down
|
||||
|
||||
dev: ## Запуск в режиме разработки (с выводом логов)
|
||||
@echo "$(GREEN)Запуск в режиме разработки...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) up --build
|
||||
docker compose -f $(COMPOSE_FILE) up --build
|
||||
|
||||
rebuild: ## Пересобрать и запустить сервисы
|
||||
@echo "$(YELLOW)Пересборка и запуск сервисов...$(NC)"
|
||||
docker-compose -f $(COMPOSE_FILE) down
|
||||
docker-compose -f $(COMPOSE_FILE) build --no-cache
|
||||
docker-compose -f $(COMPOSE_FILE) up -d
|
||||
docker compose -f $(COMPOSE_FILE) down
|
||||
docker compose -f $(COMPOSE_FILE) build --no-cache
|
||||
docker compose -f $(COMPOSE_FILE) up -d
|
||||
@echo "$(GREEN)Сервисы пересобраны и запущены!$(NC)"
|
||||
@echo "$(YELLOW)Приложение доступно по адресу: http://localhost:9001$(NC)"
|
||||
|
||||
up-root: ## Запустить сервисы с правами root (для решения проблем с Docker socket)
|
||||
@echo "$(GREEN)Запуск сервисов с правами root...$(NC)"
|
||||
docker compose -f docker-compose.root.yml up -d
|
||||
@echo "$(GREEN)Сервисы запущены с правами root!$(NC)"
|
||||
@echo "$(YELLOW)Приложение доступно по адресу: http://localhost:9001$(NC)"
|
||||
|
||||
down-root: ## Остановить сервисы с правами root
|
||||
@echo "$(YELLOW)Остановка сервисов с правами root...$(NC)"
|
||||
docker compose -f docker-compose.root.yml down
|
||||
@echo "$(GREEN)Сервисы с правами root остановлены!$(NC)"
|
||||
|
||||
18
README.md
18
README.md
@@ -97,6 +97,24 @@ http://localhost:9001
|
||||
|
||||
**⚠️ Важно:** Измените значения `LOGBOARD_PASS`, `SECRET_KEY` и `ENCRYPTION_KEY` в продакшене!
|
||||
|
||||
### Решение проблем с правами доступа к Docker
|
||||
|
||||
Если вы получаете ошибку `Permission denied` при подключении к Docker socket, используйте команды с правами root:
|
||||
|
||||
```bash
|
||||
# Запуск с правами root
|
||||
make up-root
|
||||
|
||||
# Остановка с правами root
|
||||
make down-root
|
||||
```
|
||||
|
||||
Или добавьте вашего пользователя в группу docker:
|
||||
```bash
|
||||
sudo usermod -a -G docker $USER
|
||||
# Перезагрузите систему или перелогиньтесь
|
||||
```
|
||||
|
||||
### Классический способ
|
||||
|
||||
```bash
|
||||
|
||||
46
docker-compose.root.yml
Normal file
46
docker-compose.root.yml
Normal file
@@ -0,0 +1,46 @@
|
||||
# LogBoard+ - Docker Compose с правами root
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# Используйте этот файл, если основной не работает из-за прав доступа к Docker socket
|
||||
|
||||
version: "3.9"
|
||||
|
||||
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:-s3cret-change-me}
|
||||
COMPOSE_PROJECT_NAME: ${COMPOSE_PROJECT_NAME:-}
|
||||
LOGBOARD_SNAPSHOT_DIR: ${LOGBOARD_SNAPSHOT_DIR:-/app/snapshots}
|
||||
LOGBOARD_INDEX_HTML: ${LOGBOARD_INDEX_HTML:-./templates/index.html}
|
||||
TZ_TS: ${TZ_TS:-}
|
||||
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:-basic}
|
||||
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:-}
|
||||
ports:
|
||||
- "${LOGBOARD_PORT:-9001}:${LOGBOARD_PORT:-9001}"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ./snapshots:${LOGBOARD_SNAPSHOT_DIR:-/app/snapshots}
|
||||
restart: unless-stopped
|
||||
user: "0:0" # Запуск от root для доступа к Docker socket
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
logboard:
|
||||
build: .
|
||||
@@ -38,3 +36,6 @@ services:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ./snapshots:${LOGBOARD_SNAPSHOT_DIR:-/app/snapshots}
|
||||
restart: unless-stopped
|
||||
user: "0:0" # Запуск от root для доступа к Docker socket
|
||||
group_add:
|
||||
- docker
|
||||
|
||||
@@ -22,6 +22,8 @@ TZ_TS=
|
||||
|
||||
# Настройки Docker
|
||||
DOCKER_HOST=unix:///var/run/docker.sock
|
||||
DOCKER_TLS_VERIFY=
|
||||
DOCKER_CERT_PATH=
|
||||
|
||||
# Настройки безопасности
|
||||
# Измените эти значения на свои в продакшене
|
||||
|
||||
Reference in New Issue
Block a user