Версия: 1.0.0
Дата: 2026-03-15
/etc/systemd/system/ ← ТОЛЬКО системное (OS-уровень)
Docker compose ← ВСЕ проектные и платформенные сервисы
system/scheduler/ ← ВСЕ расписания (не cron напрямую)
⛔ ЗАПРЕЩЕНО создавать .service файлы в /etc/systemd/system/ для проектных сервисов.
| Сервис | Причина |
|---|---|
| nginx | входная точка сервера |
| docker | движок контейнеров |
| hub-mount, infra-mount | монтирование дисков при старте OS |
| fail2ban | защита OS |
Всё остальное — Docker.
| Категория | Примеры |
|---|---|
| Платформа | md-viewer, file-share |
| Проекты | erp, pro1, filemanager, n8n, nocodb |
| Боты | telegram-vip, любые боты |
# Смотреть задачи
python3 system/scheduler/run.py --list
# Добавить задачу
vim system/scheduler/schedule.yaml
# Запустить вручную
python3 system/scheduler/run.py --run task_name
projects/org/{project}/app/{service}/
├── solution/ ← код
├── infrastructure/
│ ├── Dockerfile ← как собрать образ
│ ├── docker-compose.yml ← как запустить
│ └── .env.example ← переменные окружения (без секретов)
└── CLAUDE.md
Конфиг рядом с кодом → переехал проект → конфиг переехал.
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
services:
app:
build: ../solution
container_name: {project}-{service}
restart: always
ports:
- "8000:8000"
volumes:
- ../solution:/app # код (для разработки)
- /mnt/beget-s3:/data:ro # данные (если нужны)
env_file:
- ../solution/.env
networks:
- {project}-network
networks:
{project}-network:
driver: bridge
# 1. Создать Dockerfile + docker-compose.yml в infrastructure/
# 2. Проверить запуск
docker compose -f infrastructure/docker-compose.yml up -d
# 3. Убедиться что работает
curl http://localhost:{port}/
# 4. Остановить и отключить systemd
systemctl stop {service}
systemctl disable {service}
# 5. Удалить unit-файл
rm /etc/systemd/system/{service}.service
systemctl daemon-reload