# Автоматический запуск микросервисов после перезагрузки сервера

## Debuan OS server version

## Обзор системы

Данная система состоит из нескольких микросервисов, развернутых через Docker Compose. Для обеспечения автоматического запуска после перезагрузки сервера настроена интеграция с systemd.

## Конфигурация автоматического запуска

### 1. Systemd Service для Docker

В системе настроен сервис Docker для автоматического запуска при загрузке ОС:

```bash
sudo systemctl enable docker.service
```

Эта команда гарантирует, что Docker демон будет автоматически запускаться при старте системы.

### 2. Docker Compose и автоматический перезапуск

В файле `docker-compose.yml` для каждого сервиса настроена политика перезапуска:

```yaml
restart: unless-stopped
```

Эта политика означает:
- Сервисы автоматически перезапускаются при выходе из строя
- Сервисы не перезапускаются, если были остановлены вручную
- При перезагрузке системы все сервисы автоматически запускаются

## Процесс запуска после перезагрузки

### Последовательность запуска:

1. **Загрузка ОС** → systemd запускает Docker демон
2. **Docker** → автоматически восстанавливает контейнеры с политикой `unless-stopped`
3. **Health checks** → система проверяет готовность каждого сервиса
4. **Зависимости** → сервисы запускаются в правильном порядке согласно `depends_on`

### Health Checks и зависимости

Система использует health checks для контроля готовности сервисов:

- **Базы данных**: проверка доступности через `pg_isready`
- **API сервисы**: HTTP health checks на эндпоинты `/health`
- **Nginx**: проверка через `curl http://localhost/health`
- **Certbot**: проверка наличия SSL сертификатов

## Мониторинг состояния системы

После перезагрузки проверьте статус системы:

```bash
# Проверить статус всех контейнеров
docker-compose ps

# Просмотреть логи запуска
docker-compose logs

# Проверить health status
docker ps --format "table {{.Names}}\t{{.Status}}"
```

## Ручное управление сервисами

```bash
# Остановить все сервисы
docker-compose down

# Запустить все сервисы
docker-compose up -d

# Перезапустить конкретный сервис
docker-compose restart nginx
```

## Важные замечания

1. **Время запуска**: Полный запуск системы может занять 2-5 минут из-за health checks и зависимостей
2. **Порядок запуска**: Критические сервисы (БД) запускаются первыми
3. **Volume данные**: Данные сохраняются между перезагрузками благодаря Docker volumes
4. **Сетевые соединения**: Сети восстанавливаются автоматически

## Устранение неисправностей

Если сервисы не запускаются после перезагрузки:

```bash
# Проверить статус Docker
sudo systemctl status docker

# Проверить логи Docker
sudo journalctl -u docker.service

# Принудительно перезапустить композ
docker-compose down
docker-compose up -d
```

Система спроектирована для полного самовосстановления после перезагрузки сервера без необходимости ручного вмешательства.