fix: автоопределение docker compose v1/v2 и проверка окружения
- Makefile автоматически находит docker compose или docker-compose - Добавлена команда make docker-check для проверки окружения - Создана документация DOCKER_INSTALL.md - Обновлен DEPLOY_QUICKSTART.md с инструкцией по установке Docker - Все docker команды теперь используют переменную DOCKER_COMPOSE Исправляет ошибку: 'docker-compose: No such file or directory'
This commit is contained in:
60
Makefile
60
Makefile
@@ -1,5 +1,8 @@
|
||||
# Makefile для телеграм-бота розыгрышей
|
||||
|
||||
# Определяем команду $(DOCKER_COMPOSE) (v2) или docker-compose (v1)
|
||||
DOCKER_COMPOSE := $(shell command -v $(DOCKER_COMPOSE) 2> /dev/null || command -v docker-compose 2> /dev/null)
|
||||
|
||||
.PHONY: help install setup setup-postgres init-db run test clean
|
||||
|
||||
# По умолчанию показываем справку
|
||||
@@ -213,10 +216,27 @@ docker-setup:
|
||||
@mkdir -p logs backups
|
||||
@echo "✅ Настройка завершена!"
|
||||
|
||||
# Проверка Docker и Docker Compose
|
||||
docker-check:
|
||||
@echo "<22> Проверка Docker окружения..."
|
||||
@command -v docker >/dev/null 2>&1 || { echo "❌ Docker не установлен! См. DOCKER_INSTALL.md"; exit 1; }
|
||||
@echo "✅ Docker: $$(docker --version)"
|
||||
@if [ -z "$(DOCKER_COMPOSE)" ]; then \
|
||||
echo "❌ Docker Compose не найден!"; \
|
||||
echo " Установите: sudo apt install docker-compose-plugin"; \
|
||||
echo " Или см. DOCKER_INSTALL.md"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo "✅ Docker Compose: $$($(DOCKER_COMPOSE) version)"
|
||||
@docker ps >/dev/null 2>&1 || { echo "❌ Docker daemon не запущен!"; echo " Запустите: sudo systemctl start docker"; exit 1; }
|
||||
@echo "✅ Docker daemon работает"
|
||||
@echo ""
|
||||
@echo "🎉 Все проверки пройдены!"
|
||||
|
||||
# Сборка Docker образа
|
||||
docker-build:
|
||||
docker-build: docker-check
|
||||
@echo "🔨 Сборка Docker образа..."
|
||||
docker compose build --no-cache
|
||||
$(DOCKER_COMPOSE) build --no-cache
|
||||
|
||||
# Запуск контейнеров в фоновом режиме
|
||||
docker-up:
|
||||
@@ -225,7 +245,7 @@ docker-up:
|
||||
echo "❌ Файл .env.prod не найден! Запустите 'make docker-setup'"; \
|
||||
exit 1; \
|
||||
fi
|
||||
docker compose --env-file .env.prod up -d
|
||||
$(DOCKER_COMPOSE) --env-file .env.prod up -d
|
||||
@echo "✅ Контейнеры запущены!"
|
||||
@echo "📊 Проверьте статус: make docker-status"
|
||||
@echo "📋 Просмотр логов: make docker-logs"
|
||||
@@ -237,39 +257,39 @@ docker-up-fg:
|
||||
echo "❌ Файл .env.prod не найден! Запустите 'make docker-setup'"; \
|
||||
exit 1; \
|
||||
fi
|
||||
docker compose --env-file .env.prod up
|
||||
$(DOCKER_COMPOSE) --env-file .env.prod up
|
||||
|
||||
# Остановка контейнеров
|
||||
docker-down:
|
||||
@echo "🛑 Остановка контейнеров..."
|
||||
docker compose down
|
||||
$(DOCKER_COMPOSE) down
|
||||
@echo "✅ Контейнеры остановлены!"
|
||||
|
||||
# Перезапуск контейнеров
|
||||
docker-restart:
|
||||
@echo "🔄 Перезапуск контейнеров..."
|
||||
docker compose restart
|
||||
$(DOCKER_COMPOSE) restart
|
||||
@echo "✅ Контейнеры перезапущены!"
|
||||
|
||||
# Просмотр логов бота
|
||||
docker-logs:
|
||||
@echo "📋 Логи бота..."
|
||||
docker compose logs -f bot
|
||||
$(DOCKER_COMPOSE) logs -f bot
|
||||
|
||||
# Просмотр логов базы данных
|
||||
docker-logs-db:
|
||||
@echo "📋 Логи базы данных..."
|
||||
docker compose logs -f db
|
||||
$(DOCKER_COMPOSE) logs -f db
|
||||
|
||||
# Просмотр всех логов
|
||||
docker-logs-all:
|
||||
@echo "📋 Все логи..."
|
||||
docker compose logs -f
|
||||
$(DOCKER_COMPOSE) logs -f
|
||||
|
||||
# Статус контейнеров
|
||||
docker-status:
|
||||
@echo "📊 Статус контейнеров..."
|
||||
@docker compose ps
|
||||
@$(DOCKER_COMPOSE) ps
|
||||
@echo ""
|
||||
@echo "💾 Использование volumes:"
|
||||
@docker volume ls | grep lottery || echo "Нет volumes"
|
||||
@@ -281,20 +301,20 @@ docker-ps:
|
||||
# Применение миграций в контейнере
|
||||
docker-db-migrate:
|
||||
@echo "⬆️ Применение миграций в контейнере..."
|
||||
docker compose exec bot alembic upgrade head
|
||||
$(DOCKER_COMPOSE) exec bot alembic upgrade head
|
||||
@echo "✅ Миграции применены!"
|
||||
|
||||
# Подключение к PostgreSQL в контейнере
|
||||
docker-db-shell:
|
||||
@echo "🐘 Подключение к PostgreSQL..."
|
||||
@docker compose exec db psql -U $${POSTGRES_USER:-lottery_user} -d $${POSTGRES_DB:-lottery_bot_db}
|
||||
@$(DOCKER_COMPOSE) exec db psql -U $${POSTGRES_USER:-lottery_user} -d $${POSTGRES_DB:-lottery_bot_db}
|
||||
|
||||
# Создание бэкапа базы данных
|
||||
docker-db-backup:
|
||||
@echo "💾 Создание бэкапа базы данных..."
|
||||
@mkdir -p backups
|
||||
@BACKUP_FILE=backups/backup_$$(date +%Y%m%d_%H%M%S).sql; \
|
||||
docker compose exec -T db pg_dump -U $${POSTGRES_USER:-lottery_user} $${POSTGRES_DB:-lottery_bot_db} > $$BACKUP_FILE && \
|
||||
$(DOCKER_COMPOSE) exec -T db pg_dump -U $${POSTGRES_USER:-lottery_user} $${POSTGRES_DB:-lottery_bot_db} > $$BACKUP_FILE && \
|
||||
echo "✅ Бэкап создан: $$BACKUP_FILE"
|
||||
|
||||
# Восстановление из бэкапа
|
||||
@@ -307,7 +327,7 @@ docker-db-restore:
|
||||
@echo "Восстановление из: $(BACKUP)"
|
||||
@read -p "Это удалит текущие данные! Продолжить? [y/N] " confirm; \
|
||||
if [ "$$confirm" = "y" ] || [ "$$confirm" = "Y" ]; then \
|
||||
cat $(BACKUP) | docker compose exec -T db psql -U $${POSTGRES_USER:-lottery_user} $${POSTGRES_DB:-lottery_bot_db}; \
|
||||
cat $(BACKUP) | $(DOCKER_COMPOSE) exec -T db psql -U $${POSTGRES_USER:-lottery_user} $${POSTGRES_DB:-lottery_bot_db}; \
|
||||
echo "✅ База данных восстановлена!"; \
|
||||
else \
|
||||
echo "❌ Отменено"; \
|
||||
@@ -316,12 +336,12 @@ docker-db-restore:
|
||||
# Открыть shell в контейнере бота
|
||||
docker-shell:
|
||||
@echo "🐚 Открытие shell в контейнере бота..."
|
||||
docker compose exec bot /bin/bash
|
||||
$(DOCKER_COMPOSE) exec bot /bin/bash
|
||||
|
||||
# Остановка и удаление контейнеров
|
||||
docker-clean:
|
||||
@echo "🧹 Очистка контейнеров..."
|
||||
docker compose down --remove-orphans
|
||||
$(DOCKER_COMPOSE) down --remove-orphans
|
||||
@echo "✅ Контейнеры удалены!"
|
||||
|
||||
# Полная очистка (включая volumes)
|
||||
@@ -330,7 +350,7 @@ docker-prune:
|
||||
@read -p "Продолжить? [y/N] " confirm; \
|
||||
if [ "$$confirm" = "y" ] || [ "$$confirm" = "Y" ]; then \
|
||||
echo "🗑️ Полная очистка..."; \
|
||||
docker compose down -v --remove-orphans; \
|
||||
$(DOCKER_COMPOSE) down -v --remove-orphans; \
|
||||
docker system prune -f; \
|
||||
echo "✅ Очистка завершена!"; \
|
||||
else \
|
||||
@@ -340,9 +360,9 @@ docker-prune:
|
||||
# Пересборка и перезапуск
|
||||
docker-rebuild:
|
||||
@echo "🔄 Пересборка и перезапуск..."
|
||||
docker compose down
|
||||
docker compose build --no-cache
|
||||
docker compose --env-file .env.prod up -d
|
||||
$(DOCKER_COMPOSE) down
|
||||
$(DOCKER_COMPOSE) build --no-cache
|
||||
$(DOCKER_COMPOSE) --env-file .env.prod up -d
|
||||
@echo "✅ Готово!"
|
||||
@make docker-logs
|
||||
|
||||
|
||||
Reference in New Issue
Block a user