#!/bin/bash # fix_docker.sh - Скрипт для устранения проблемы ContainerConfig echo "🔧 Устранение проблемы с Docker контейнерами..." # Остановка всех контейнеров проекта echo "📥 Остановка всех контейнеров проекта..." docker-compose down -v # Принудительное удаление контейнеров по имени echo "🗑️ Принудительное удаление оставшихся контейнеров..." docker rm -f postgres-tinder adminer-tinder telegram-tinder-bot 2>/dev/null || true # Очистка неиспользуемых томов и сетей echo "🧹 Очистка неиспользуемых томов и сетей..." docker system prune -f --volumes # Очистка кеша Docker echo "🧼 Очистка кеша Docker..." docker builder prune -f # Исправление docker-compose.yml echo "📝 Создание обновленного docker-compose.yml..." cat > docker-compose.yml << EOL version: '3.8' services: bot: build: . container_name: telegram-tinder-bot restart: unless-stopped env_file: .env environment: - NODE_ENV=production - DB_HOST=${DB_HOST:-db} - DB_PORT=${DB_PORT:-5432} - DB_NAME=${DB_NAME:-telegram_tinder_bot} - DB_USERNAME=${DB_USERNAME:-postgres} - DB_PASSWORD=${DB_PASSWORD:-postgres} volumes: - ./uploads:/app/uploads:rw - ./logs:/app/logs:rw networks: - bot-network healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s EOL # Если используем внешнюю базу данных, добавляем только adminer if [ "${DB_HOST:-db}" != "db" ]; then cat >> docker-compose.yml << EOL adminer: image: adminer:latest container_name: adminer-tinder restart: unless-stopped ports: - "8080:8080" networks: - bot-network EOL else # Если используем локальную базу данных, добавляем PostgreSQL и adminer cat >> docker-compose.yml << EOL db: image: postgres:15-alpine container_name: postgres-tinder restart: unless-stopped environment: - POSTGRES_DB=\${DB_NAME:-telegram_tinder_bot} - POSTGRES_USER=\${DB_USERNAME:-postgres} - POSTGRES_PASSWORD=\${DB_PASSWORD:-postgres} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5433:5432" networks: - bot-network healthcheck: test: ["CMD-SHELL", "pg_isready -U \${DB_USERNAME:-postgres} -d \${DB_NAME:-telegram_tinder_bot}"] interval: 10s timeout: 5s retries: 5 start_period: 10s adminer: image: adminer:latest container_name: adminer-tinder restart: unless-stopped ports: - "8080:8080" networks: - bot-network EOL fi # Завершаем файл docker-compose.yml cat >> docker-compose.yml << EOL volumes: postgres_data: networks: bot-network: driver: bridge EOL echo "✅ docker-compose.yml обновлен!" echo "🚀 Готово! Теперь вы можете запустить контейнеры снова с помощью команды:" echo "docker-compose up -d"