Розгортання багатоконтейнерного Docker додатка з GitHub Actions в Laravel

pic

Зібрано з Google

У сучасному світі технологій додатки часто залежать від кількох взаємопов'язаних сервісів (контейнерів), щоб працювати безперебійно — наприклад, веб-додаток, який працює разом з базою даних, кешем та балансувальником навантаження. Розгортання такого багатоконтейнерного додатка може здатися складним, але з GitHub Actions ви можете налаштувати плавний CI/CD пайплайн для розгортання вашого додатка в продакшн. Ось просте пояснення того, як це робиться.

Що таке багатоконтейнерне розгортання?

Це процес розгортання кількох Docker контейнерів, які працюють разом як система. Наприклад, Laravel додаток може використовувати:

  • Один контейнер для коду додатка.
  • Інший — для бази даних MySQL.
  • Nginx використовується для обслуговування статичних файлів і проксінгу запитів.

Крок 1: Передумови

Перед тим, як почати розгортання:

  1. Dockerize ваш додаток: Переконайтеся, що кожен сервіс має Dockerfile.
  2. Налаштуйте Docker Compose: Файл docker-compose.yml для оркестрації контейнерів.
  3. Налаштуйте сервер: VPS (наприклад, DigitalOcean або AWS Lightsail) з встановленими Docker та Docker Compose.

Крок 2: Створення GitHub Actions Workflow

GitHub Actions дозволяє автоматизувати тестування, збірку та розгортання. Ось простий workflow для розгортання Docker-ізованого додатка:

name: Multi-Container Deployment  
on:  
 push:  
 branches: [main]  
jobs:  
 deploy:  
 runs-on: ubuntu-latest  
 steps:  
 # Перевірка коду  
 - name: Checkout Repository  
 uses: actions/checkout@v2  
 # Створення Docker образів  
 - name: Build Docker Images  
 run: |  
 docker-compose -f docker-compose.yml build  
 # Завантаження образів на Docker Hub  
 - name: Push Images  
 env:  
 DOCKER_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}  
 DOCKER_PASSWORD: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}  
 run: |  
 echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin  
 docker-compose -f docker-compose.yml push  
 # Розгортання на VPS  
 - name: Deploy to VPS  
 uses: appleboy/[email protected]  
 with:  
 host: ${{ secrets.VPS_SERVER_IP }}  
 username: ${{ secrets.VPS_USERNAME }}  
 key: ${{ secrets.SSH_PRIVATE_KEY }}  
 script: |  
 cd /path/to/your/app  
 docker-compose pull  
 docker-compose down  
 docker-compose up -d

Як це працює

  1. Тригер на Push: Workflow запускається кожного разу, коли ви робите push в гілку main.
  2. Створення Docker образів: Образи для кожного контейнера створюються за допомогою docker-compose.yml.
  3. Завантаження на Docker Hub: Створені образи завантажуються на Docker Hub (або інший контейнерний реєстр).
  4. Розгортання на VPS: Workflow підключається до вашого сервера через SSH, завантажує останні образи та перезапускає контейнери за допомогою docker-compose.

Чому цей workflow чудовий

  • Автоматизація: Без вручну підключення по SSH або виконання команд — все автоматизовано.
  • Послідовність: Кожне розгортання використовує однакові образи, створені в CI, що забезпечує стабільність.
  • Простота: Docker Compose спрощує управління багатоконтейнерними додатками.

І ось, все готово! За допомогою цього workflow ви можете без проблем розгорнути ваш багатоконтейнерний додаток, не зламавши голову. Щасливого розгортання! 🚀

Перекладено з: Docker Multi-Container Deployment with GitHub Actions in Laravel

Leave a Reply

Your email address will not be published. Required fields are marked *