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 آمده است:
-
تریگر گردش کار را تعریف کنید: گردش کار را برای راه اندازی تنظیم می کنیم
push
رویدادها بهmain
شاخه - راه اندازی Docker Buildx: ما Docker Buildx را با درایور ابر پیکربندی میکنیم و نقطه پایانی لازم را برای سازنده Docker Build Cloud ارائه میکنیم.
-
تصویر داکر را بسازید و فشار دهید: در نهایت، تصویر 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!"
نکات کلیدی در گردش کار:
-
Docker Buildx را برای Cloud تنظیم کنید: اینجا جایی است که ما درایور ابر را پیکربندی می کنیم (
driver: cloud
) برای استفاده از Docker Build Cloud برای فرآیند ساخت. مطمئن شوید که نقطه پایانی Docker Build Cloud خود را در اینجا مشخص کرده اید (به عنوان مثال،ORG/default
). -
ساختمان های چند معماری: جادوی واقعی با این اتفاق می افتد
platforms: linux/amd64, linux/arm64, etc
پرچم Docker Build Cloud به طور خودکار ساختهای چند قوس را برای شما مدیریت میکند—دیگر سردرد پیکربندی دستی وجود ندارد. - به رجیستری فشار دهید: پس از تکمیل ساخت، تصویر به رجیستری ما (در این مورد GHCR) فرستاده می شود 🚀.
مرحله 3: GitHub Secrets را تنظیم کنید
قبل از ادامه، باید GitHub Secrets را برای احراز هویت Docker Hub پیکربندی کنید. این مراحل را دنبال کنید:
- به مخزن خود بروید تنظیمات > اسرار.
- اسرار زیر را اضافه کنید:
- 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 مبارزه می کند. کد نویسی مبارک، و امیدوارم که ساخت های شما سریع و موفق باشند! 🧑💻🎉
منابع