diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml new file mode 100644 index 0000000..6f3cd65 --- /dev/null +++ b/.gitea/workflows/ci-cd.yml @@ -0,0 +1,38 @@ +name: Build and Deploy MikroTik Bot + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Registry + uses: docker/login-action@v2 + with: + registry: 10.10.30.121:5000 + username: admin + password: admin + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + file: ./Dockerfile + push: true + tags: 10.10.30.121:5000/mikrotik-bot:latest + + - name: Deploy to production + run: | + # Здесь будет команда для обновления контейнера в production + echo "Deployment step - will be configured with Portainer API" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 6c446f2..a3fc9f3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,34 +1,23 @@ version: '3.8' + services: - telegram-bot: - build: . - container_name: mikrotik-telegram-bot - env_file: - - .env + mikrotik-bot: + image: 10.10.30.121:5000/mikrotik-bot:latest + container_name: mikrotik-bot restart: unless-stopped + environment: + - BOT_TOKEN=your_bot_token_here + - ROUTER_HOST=your_router_ip_here + - ROUTER_USER=your_router_user_here + - ROUTER_PASSWORD=your_router_password_here + - DATABASE_PATH=/app/data/bot.db volumes: - - ./data:/app/data # Сохранение данных бота (например, SQLite база) - healthcheck: - # Используем curl, который установлен в Dockerfile - test: ["CMD", "curl", "-f", "http://localhost:8080/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 5s # Даем время на запуск - # Если боту нужно общаться с роутером по IP в локальной сети: - # network_mode: "host" - # Или настройте пользовательскую bridge-сеть Docker, если требуется - # networks: - # - my_local_network - -# Пример определения пользовательской сети (если не используется host) -# networks: -# my_local_network: -# driver: bridge -# ipam: -# config: -# - subnet: 172.20.0.0/16 # Пример подсети - - # Если нужно пробросить прокси/порт, добавь: - # ports: - # - "8080:8080" \ No newline at end of file + - ./data:/app/data + ports: + - "8000:8000" # FastAPI health endpoint + networks: + - bot-network + +networks: + bot-network: + driver: bridge \ No newline at end of file