Зібрано з Google
У сучасному світі технологій додатки часто залежать від кількох взаємопов'язаних сервісів (контейнерів), щоб працювати безперебійно — наприклад, веб-додаток, який працює разом з базою даних, кешем та балансувальником навантаження. Розгортання такого багатоконтейнерного додатка може здатися складним, але з GitHub Actions ви можете налаштувати плавний CI/CD пайплайн для розгортання вашого додатка в продакшн. Ось просте пояснення того, як це робиться.
Що таке багатоконтейнерне розгортання?
Це процес розгортання кількох Docker контейнерів, які працюють разом як система. Наприклад, Laravel додаток може використовувати:
- Один контейнер для коду додатка.
- Інший — для бази даних MySQL.
- Nginx використовується для обслуговування статичних файлів і проксінгу запитів.
Крок 1: Передумови
Перед тим, як почати розгортання:
- Dockerize ваш додаток: Переконайтеся, що кожен сервіс має
Dockerfile
. - Налаштуйте Docker Compose: Файл
docker-compose.yml
для оркестрації контейнерів. - Налаштуйте сервер: 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
Як це працює
- Тригер на Push: Workflow запускається кожного разу, коли ви робите push в гілку
main
. - Створення Docker образів: Образи для кожного контейнера створюються за допомогою
docker-compose.yml
. - Завантаження на Docker Hub: Створені образи завантажуються на Docker Hub (або інший контейнерний реєстр).
- Розгортання на VPS: Workflow підключається до вашого сервера через SSH, завантажує останні образи та перезапускає контейнери за допомогою
docker-compose
.
Чому цей workflow чудовий
- Автоматизація: Без вручну підключення по SSH або виконання команд — все автоматизовано.
- Послідовність: Кожне розгортання використовує однакові образи, створені в CI, що забезпечує стабільність.
- Простота: Docker Compose спрощує управління багатоконтейнерними додатками.
І ось, все готово! За допомогою цього workflow ви можете без проблем розгорнути ваш багатоконтейнерний додаток, не зламавши голову. Щасливого розгортання! 🚀
Перекладено з: Docker Multi-Container Deployment with GitHub Actions in Laravel