برنامه نویسی

Supercharging Docker Multi-Architecture Builds با Docker Build Cloud در GitHub Actions 🚀

مبارزه ساخت چند معماری در اکشن های گیت هاب 😅

ساخت تصاویر Docker چند معماری (مانند linux/amd64، linux/arm64و غیره) در GitHub Actions می تواند مانند یک نبرد سخت باشد. احتمالاً با آن کشتی گرفته اید buildx، برای راه اندازی QEMU برای مجازی سازی تلاش کرد و با وقفه های بی پایان مواجه شد زیرا دونده شما کاملاً به وظیفه خود عمل نمی کند. به روند آهسته و پیچیده مدیریت ساخت‌های پلتفرم مختلف، Dockerfiles چند مرحله‌ای و مشکلات کش اشاره نمی‌کنیم.

و هنگامی که پرچمی را فراموش می‌کنید، یک پلتفرم را از دست می‌دهید، یا در نهایت به صفحه نمایش خود خیره می‌شوید که زمان ساخت پس از یک ساعت تمام می‌شود – اجازه دهید با آن روبرو شویم، ناامیدکننده است. 😬

وارد Docker Build Cloud شوید🌥️

خبر خوب اینجاست: Docker Build Cloud ساخت‌های چند معماری را با بارگذاری کل فرآیند در ابر ساده می‌کند. دیگر نیازی به پرداختن به تنظیمات QEMU، نگرانی در مورد محدودیت‌های دونده یا منتظر ماندن برای اتمام ساخت نیست. با Docker Build Cloud می توانید:

  • بدون زحمت برای linux/amd64 و linux/arm64 (و بیشتر)
  • پیچیدگی راه اندازی QEMU برای مجازی سازی را حذف کنید
  • مقیاس با منابع ابری ساخته می شود، بدون وقفه یا کاهش سرعت
  • تصاویر خود را مستقیماً بدون بارگذاری محلی به رجیستری خود فشار دهید

برای از بین بردن مبارزات چند معماری آماده اید؟ بیایید با Docker Build Cloud در GitHub Actions شروع کنیم! 🚀

مرحله 1: پیش نیازها

قبل از اینکه وارد تنظیمات شویم، به چند پیش نیاز نیاز دارید:

  • حساب داکر: مطمئن شوید که برای Docker Build Cloud ثبت نام کرده اید.
  • اسرار GitHub: برای احراز هویت باید نام کاربری Docker Hub و رمز دسترسی شخصی (PAT) خود را به عنوان اسرار GitHub اضافه کنید. اینها برای ورود به Docker Hub از GitHub Actions استفاده خواهند شد.
  • Docker Build Cloud Setup: مطمئن شوید که سازنده Docker Build Cloud خود را قبلاً راه اندازی کرده اید. برای استفاده از آن در GitHub Actions به نقطه پایان سازنده نیاز دارید.

مرحله 2: گردش کار GitHub Action را ایجاد کنید

اکنون که همه چیز را آماده کرده اید، به مخزن خود بروید و a ایجاد کنید .github/workflows/build.yml فایل در اینجا نحوه پیکربندی گردش کار GitHub Action برای استفاده از Docker Build Cloud آمده است:

  1. تریگر گردش کار را تعریف کنید: گردش کار را برای راه اندازی تنظیم می کنیم push رویدادها به main شاخه
  2. راه اندازی Docker Buildx: ما Docker Buildx را با درایور ابر پیکربندی می‌کنیم و نقطه پایانی لازم را برای سازنده Docker Build Cloud ارائه می‌کنیم.
  3. تصویر داکر را بسازید و فشار دهید: در نهایت، تصویر Docker را می‌سازیم و فشار می‌دهیم و معماری‌های هدف را مشخص می‌کنیم (به عنوان مثال، linux/amd64، linux/arm64) و نتایج را مستقیماً به رجیستری فشار دهید.

آماده است؟ بیایید وارد کد شویم!

name: Docker Build and Push in the Cloud 🌥️

on:
  push:
    branches:
      - "main"

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}
  IMAGE_TAG: latest

jobs:
  build_and_push:
    runs-on: ubuntu-24.04
    permissions:
      contents: read
      packages: write

    steps:
      - name: Log in to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USER }}
          password: ${{ secrets.DOCKER_PAT }}

      - name: Log into GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Checkout Repository Code
        uses: actions/checkout@v4

      - name: Set up Docker Buildx for Cloud
        uses: docker/setup-buildx-action@v3
        with:
          driver: cloud
          endpoint: "ORG/default"  # Use your Docker Build Cloud endpoint here
          install: true

      - name: Build and Push Docker Image
        uses: docker/build-push-action@v6
        with:
          context: .
          platforms: linux/amd64,linux/arm64  # Specify multiple architectures
          tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
          push: true

      - name: Image Pushed Successfully
        run: echo "Docker image ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} pushed successfully!"

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نکات کلیدی در گردش کار:

  1. Docker Buildx را برای Cloud تنظیم کنید: اینجا جایی است که ما درایور ابر را پیکربندی می کنیم (driver: cloud) برای استفاده از Docker Build Cloud برای فرآیند ساخت. مطمئن شوید که نقطه پایانی Docker Build Cloud خود را در اینجا مشخص کرده اید (به عنوان مثال، ORG/default).
  2. ساختمان های چند معماری: جادوی واقعی با این اتفاق می افتد platforms: linux/amd64, linux/arm64, etc پرچم Docker Build Cloud به طور خودکار ساخت‌های چند قوس را برای شما مدیریت می‌کند—دیگر سردرد پیکربندی دستی وجود ندارد.
  3. به رجیستری فشار دهید: پس از تکمیل ساخت، تصویر به رجیستری ما (در این مورد GHCR) فرستاده می شود 🚀.

مرحله 3: GitHub Secrets را تنظیم کنید

قبل از ادامه، باید GitHub Secrets را برای احراز هویت Docker Hub پیکربندی کنید. این مراحل را دنبال کنید:

  1. به مخزن خود بروید تنظیمات > اسرار.
  2. اسرار زیر را اضافه کنید:
    • DOCKER_USER: نام کاربری Docker Hub شما.
    • DOCKER_PAT: نشانه دسترسی شخصی Docker Hub شما (PAT).
    • GITHUB_TOKEN: این به طور خودکار توسط GitHub ارائه می شود، بنابراین نیازی به تنظیم دستی آن ندارید.

مرحله 4: فشار دهید و شاهد وقوع جادو باشید ✨

هنگامی که تغییرات را انجام دادید و آنها را به سمت آن هل دادید main شاخه، GitHub Actions به طور خودکار فرآیند ساخت را آغاز می کند. می توانید به سمت اقدامات برای نظارت بر وضعیت ساخت، در مخزن GitHub خود برگه بزنید.

اگر همه چیز خوب پیش برود، پیام موفقیت را خواهید دید:

Docker image ghcr.io/your-org/your-repo:latest pushed successfully!
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بوم! شما به تازگی تصاویر Docker چند معماری خود را ساخته و به ابر منتقل کرده اید! دیگر نیازی به دست و پنجه نرم کردن با پرچم های ساخت یا نگرانی در مورد وقفه های زمانی به دلیل محدودیت های ماشین محلی نیست. Docker Build Cloud تمام کارهای سنگین را برای شما انجام می دهد.


چرا این تنظیمات یک تغییر دهنده بازی است

  • سرعت: ابر به صورت افقی مقیاس می‌سازد، بنابراین سریع‌تر از تکیه بر یک دونده محلی است.
  • سادگی: راه اندازی ساده است، بنابراین لازم نیست نگران پیکربندی های پیچیده برای ساخت های چند پلت فرم باشید.
  • دیگر دردسرهای ذخیره سازی وجود ندارد: Docker Build Cloud به طور خودکار کش ساخت را کنترل می کند و نیاز به بهینه سازی یا هرس دستی را از بین می برد.
  • ادغام یکپارچه با GitHub Actions: Docker Build Cloud به صورت بومی با GitHub Actions ادغام می شود و فرآیند را روان و بدون دردسر می کند.

نتیجه گیری

ادغام Docker Build Cloud در گردش کار GitHub Actions به شما این امکان را می دهد که به راحتی از ساخت های Docker چند معماری بدون دردسرهای معمول استفاده کنید. ابر حمل و نقل سنگین را انجام می دهد و ساخت سریع تر و کارآمدتر را امکان پذیر می کند. 🌥️🚀

ادامه دهید، ساخت‌های چند معماری خود را با Docker Build Cloud خودکار کنید و با دردهای سنتی خداحافظی کنید. buildx در GitHub Actions مبارزه می کند. کد نویسی مبارک، و امیدوارم که ساخت های شما سریع و موفق باشند! 🧑‍💻🎉


منابع

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا