20 хвилинний крок для створення та публікації Docker-аплікації на Node.js за допомогою GitHub Actions і Docker Hub: Подорож DevOps у 2025 році

pic

Фото від Photo-to-Canvas.com на Unsplash

Подорож DevOps: Автоматизація збірок і деплоїв за допомогою GitHub та Docker Hub

Вступ

Привіт усім і ласкаво просимо назад! У цій статті ми розглянемо автоматизацію збірки та деплою Docker-застосунків за допомогою GitHub Actions та Docker Hub. Такий підхід оптимізує життєвий цикл розробки, забезпечуючи стабільність між середовищами. Для демонстрації ми налаштуємо CI/CD конвеєр, який збирає Docker-образ і деплоїть його на Docker Hub.

Чому Docker?

Якщо ви ще не використовуєте Docker, саме час почати. Docker революціонізує процес деплою застосунків, усуваючи невідповідності між середовищами. З Docker ви можете відтворити точні налаштування як локально, так і в продакшн середовищі. Кожен застосунок працює в своєму власному ізольованому контейнері, визначеному набором конфігурацій, що гарантує надійність і ефективність.

Docker ідеально підходить для автоматизації DevOps. Ось чому:

  • Сумісність середовищ: Контейнери забезпечують однакову поведінку вашого застосунку в будь-якому середовищі.
  • Спрощене управління залежностями: Більше не буде конфліктів між бібліотеками чи залежностями.
  • Легке масштабування: Контейнери можна швидко масштабувати та дублювати.

Чому GitHub Actions?

GitHub Actions надає потужну платформу для автоматизації CI/CD робочих процесів. Поєднуючи її з Docker Hub, ви можете:

  • Автоматично збирати Docker-образи при оновленні коду.
  • Завантажувати ці образи на Docker Hub для деплою.
  • Підтримувати безперервну інтеграцію між контролем версій і контейнеризацією.

Огляд прикладу конвеєра

Реально налаштований приклад доступний тут: https://github.com/Mino75/Faritany/blob/main/.github/workflows/docker-image.yml

У цьому прикладі ми будемо:

  1. Збирати Docker-образ з репозиторію вихідного коду.
  2. Увійдемо в Docker Hub за допомогою GitHub Actions.
  3. Автоматично завантажимо образ на Docker Hub.

Цей робочий процес забезпечує мінімальне втручання вручну, дозволяючи вам зосередитись на кодуванні, автоматизуючи повторювані завдання.

Попередні вимоги

Щоб слідувати за інструкціями, вам потрібно:

  • Репозиторій GitHub з необхідним кодом застосунку та Dockerfile.
  • Обліковий запис на Docker Hub.
  • Налаштовані GitHub Secrets з:
    • DOCKER_HUB_USER: ваше ім’я користувача Docker Hub.
    • DOCKER_HUB_TOKEN: особистий токен доступу для Docker Hub.

Налаштування CI/CD конвеєра

Крок 1: Визначення робочого процесу GitHub Actions

У вашому репозиторії створіть файл .github/workflows/docker-ci.yaml зі наступним вмістом:

name: Docker Image CI
on:  
 workflow_dispatch:jobs: build: runs-on: ubuntu-latest steps:  
 - uses: actions/checkout@v4  
 - name: Build the Docker image  
 run: docker build . --file Dockerfile --tag ${{ secrets.DOCKER_HUB_USER }}/myapp:1.0.0  
 - name: Log in to Docker Hub  
 uses: docker/login-action@v4  
 with:  
 username: ${{ secrets.DOCKER_HUB_USER }}  
 password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Push Docker image to Docker Hub  
 run: docker push ${{ secrets.DOCKER_HUB_USER }}/myapp:1.0.0

Цей робочий процес виконує наступне:

  • Отримує код: Завантажує останню версію коду з репозиторію.
  • Збирає Docker-образ: За допомогою наданого Dockerfile збирає образ з тегом, що відповідає вашому репозиторію на Docker Hub.
  • Увійде в Docker Hub: Використовує облікові дані, збережені в GitHub Secrets, для аутентифікації.
  • Завантажує образ на Docker Hub: Завантажує зібраний образ у ваш репозиторій на Docker Hub.

Крок 2: Налаштування Dockerfile

Переконайтесь, що у вашому репозиторії є Dockerfile, який визначає, як будувати контейнер застосунку. Ось приклад:

# Використовувати офіційне середовище виконання Node.js як базовий образ  
FROM node:16
# Встановлюємо робочу директорію  
WORKDIR /app# Копіюємо package-файли та встановлюємо залежності  
COPY package*.json ./  
RUN npm install# Копіюємо вихідний код застосунку  
COPY .

# Відкриваємо порт застосунку  
EXPOSE 3000# Визначаємо команду за замовчуванням для запуску застосунку  
CMD ["npm", "start"]

Крок 3: Налаштування GitHub Secrets

Перейдіть до налаштувань вашого репозиторію GitHub і додайте наступні секрети:

  • DOCKER_HUB_USER: Ваше ім'я користувача на Docker Hub.
  • DOCKER_HUB_TOKEN: Особистий токен доступу з Docker Hub.

Крок 4: Запуск робочого процесу

Зробіть коміт змін у репозиторії або вручну запустіть робочий процес із вкладки GitHub Actions.

Перевірка робочого процесу

Після успішного виконання робочого процесу:

  1. Перевірте журнал GitHub Actions, щоб переконатися, що всі кроки виконано.
  2. Перевірте Docker-образ у вашому репозиторії Docker Hub під ім'ям myapp:1.0.0.

Розширення конвеєра

Цей базовий конвеєр можна розширити додатковими функціями:

  • Автоматичне тестування: Додайте крок тестування перед збіркою образу.
  • Тегування версії: Автоматичне тегування образів на основі тегів Git або хешів комітів.
  • Мультимедійні деплої: Завантажуйте образи на декілька середовищ (наприклад, staging, production).

Переваги цього підходу

  1. Автоматизація: Зменшує ручну працю і забезпечує консистентність.
  2. Безперервна інтеграція (Continuous Integration): Перевіряє зміни в коді при кожному оновленні.
  3. Безшовний деплой (Seamless Deployment): Легко доставляє контейнеризовані застосунки.

Підсумок

Використовуючи Docker, Docker Hub і GitHub Actions, ви можете оптимізувати свої DevOps робочі процеси, зменшити кількість помилок і підвищити продуктивність. Цей конвеєр дає надійну основу для автоматизації деплоїв ваших застосунків, будь то для розробки, тестування чи продакшн середовищ.

Удачі в кодуванні і до нових зустрічей для наступних пригод у світі DevOps!

Перекладено з: 20 minutes step to build and publish dockerised Nodejs APP with GitHub Actions and Docker Hub : DevOps Journey in 2025

Leave a Reply

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