Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

Trước đây mình có viết 1 bài “Hướng dẫn bước từng bước tạo Docker Images tùy chỉnh với Dockerfile và Buildx“, nó là cấu hình cho bản images bibica/wordpress-wp-cli-php8.3-fpm-alpine mà mình đang dùng trên Docker LCMP Multisite WordPress Minimal

Sau khi dùng 4-6 tháng mình nghĩ cần cập nhập mới cho phiên bản images này, chạy lại theo bài viết cũ cũng được, nhưng mình nghĩ, theo thời gian kiểu gì cũng có lúc lu bu, bận, hoặc quên vấn đề này, nên đổi sang dùng GitHub Actions để tự động mọi quá trình, khá là ngạc nhiên, vì tốc độ nó ăn đứt chuyện mình dùng VPS hay PC để tự build, lại tự động hoàn toàn, có thể set time tự chạy theo giờ mong muốn, cấu hình lại đơn giản hơn rất nhiều, nên viết thành bài này, phần để nhớ, phần để bạn nào có cùng nhu cầu có thể tham khảo

Cấu hình bên dưới mình cố gắng viết chi tiết cho ai chưa có kinh nghiệm đọc hiểu, nên nhìn hơi dài, thực tế làm rất nhanh, mọi thứ đều trên giao diện web, và bạn chỉ làm duy nhất 1 lần, mọi thứ sau này sẽ được chạy tự động

Bước 1: Tạo 1 repositories mới trên github

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

Có thể để công khai repositories để không giới hạn thời gian chạy GitHub Actions (set private bị giới hạn 2.000 phút mỗi tháng)

Ấn thêm tùy chọn Add a README file để sau tạo file mới cho tiện

Bước 2: tạo file Dockerfile

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

Ấn vào dấu + chọn Create new file

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

Đặt tên file là Dockerfile, điền nội dung Dockerfile của bạn vào vào bên dưới, sau đó ấn vào Commit changes

Bước 3: tạo Workflow mới

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

Ấn vào tab Actions ở phía trên, nhấp vào Set up a workflow yourself

Bước 4: nội dung Workflow

Thay thế bibica/wordpress-wp-cli-php8.3-fpm-alpine ở dòng 34 bằng thông tin Docker Hub của bạn

Ví dụ tài khoản của bạn trên Docker Hub có nick name là phong1982, muốn đặt tên images là custom-wordpress, sửa lại thành phong1982/custom-wordpress

name: Build and Push Docker Image

on:
  schedule:
    # Tự động chạy hàng ngày vào 0h theo múi giờ Việt Nam (UTC+7)
    - cron: "0 17 * * *"
  workflow_dispatch: # Cho phép chạy thủ công nếu cần

jobs:
  build-and-push:
    runs-on: ubuntu-22.04

    steps:
      # Checkout mã nguồn
      - name: Checkout code
        uses: actions/checkout@v3

      # Cài đặt buildx
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2        

      # Đăng nhập vào Docker Hub
      - name: Log in to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      # Build và push image đa nền tảng
      - name: Build and push Docker image
        uses: docker/build-push-action@v4
        with:
          push: true
          tags: bibica/wordpress-wp-cli-php8.3-fpm-alpine
          platforms: linux/amd64,linux/arm64
  • Chạy hàng ngày vào lúc 0h (giờ Việt Nam) hoặc khi được khởi chạy thủ công
  • Tải mã nguồn từ repository
  • Cài đặt Docker Buildx để hỗ trợ xây dựng image đa nền tảng
  • Đăng nhập vào Docker Hub bằng username + password
  • Xây dựng image Docker từ mã nguồn và đẩy nó lên Docker Hub với các kiến trúc linux/amd64linux/arm64

Xong xuôi thì ấn vào Commit changes

Bước 5: Thêm Docker Hub Credentials

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

  1. Truy cập tab Settings của repository.
  2. Trong menu bên trái, chọn Secrets and variables > Actions.
  3. Nhấp vào nút New repository secret và thêm các thông tin:
    • Name: DOCKER_USERNAME Secret: Tên người dùng Docker Hub của bạn.
    • Name: DOCKER_PASSWORD Secret: Mật khẩu hoặc token truy cập Docker Hub.

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

Xong xuôi ta sẽ có 2 repository secrets lưu trữ thông tin Username và Password tài khoản Docker Hub

Về cơ bản, lúc này mọi bước cấu hình đã hoàn tất

Bước 6: Kiểm tra lại Workflow

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

  1. Quay lại tab Actions.
  2. Bạn sẽ thấy workflow Build and Push Docker Image trong danh sách.
  3. Nhấp vào workflow và chọn Run workflow (nếu muốn chạy ngay lập tức).
  4. Theo dõi quá trình thực thi trong giao diện (mất tầm 10-15s mới hiện ra In progress cho bạn nhìn)

Cấu hình sai chỗ nào khi chạy nó sẽ báo lỗi cụ thể để bạn biết và sửa

Hướng dẫn tự động build và push Docker image đa nền tảng bằng GitHub Actions

Mọi thứ chạy bình thường, thủ công hay tự động đều hoạt động tốt

Kết luận

Khá hài lòng với phương pháp này, GitHub Actions hoàn toàn miễn phí với các dự án công khai, tự động hóa việc xây dựng và cập nhật Docker Images tùy chỉnh, hỗ trợ đa nền tảng, lại siêu nhanh, cấu hình 1 lần xong thì có thể quên luôn vấn đề này, mọi thứ còn lại để Github và Docker xử lý 😀


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!