با هدف افزایش پایداری بیلد، کمک به توسعهدهندگان و تسریع فرایند دریافت ایمیجها و پکیجها، مجموعهای از کشرجیستریها و میرورها در بستر همداکر و همروش فراهم شده است. این مستند نحوهی استفاده از این سرویسها، ساختار آدرسدهی، و نکات مهم مرتبط با فرآیند بیلد و دیپلوی را توضیح میدهد.
کشرجیستریهای در دسترس
در حال حاضر، پنج کشرجیستری زیر قابل استفاده هستند که شامل تعداد قابل توجهی از ایمیجهای پراستفاده میباشند:
hub.hamdocker.ir
mcr.hamdocker.ir
gcr.hamdocker.ir
quay.hamdocker.ir
elastic.hamdocker.ir
این رجیستریها بهترتیب بهعنوان میرور رجیستریهای معروف (Docker Hub، Microsoft Container Registry، Google Container Registry، Quay و Elastic) عمل میکنند.
مشاهده و جستوجوی ایمیجها
برای مشاهده ایمیجهای موجود در هر رجیستری، میتوانید از رابط کاربری وب استفاده کنید.
مثال: Docker Hub (همداکر)
برای مشاهدهی ایمیجهای موجود در Docker Hub همداکر، به آدرس زیر مراجعه کنید:
https://hub.hamdocker.ir/ui/packages
پس از باز شدن صفحه:
- روی آیکون ضربدر در گوشهی بالا و سمت راست کلیک کنید.
- سپس میتوانید از طریق نوار جستجو، ایمیج مورد نظر خود را پیدا کنید.
سایر رجیستریها
برای سایر رجیستریها نیز ساختار آدرس مشابه است و تنها کافی است /ui/packages را به انتهای دامنه اضافه کنید. به عنوان مثال:
https://mcr.hamdocker.ir/ui/packages
ساختار استفاده از ایمیجها
ایمیجهای متعلق به یک کاربر مشخص
برای ایمیجهایی که متعلق به یک یوزر خاص هستند، از قالب زیر استفاده کنید:
hub.hamdocker.ir/{username}/{imagename:tag}
ایمیجهای عمومی (Library)
برای ایمیجهای عمومی Docker Hub، از قالب زیر استفاده میشود:
hub.hamdocker.ir/library/{imagename:tag}
مثال:
hub.hamdocker.ir/library/nginx:latest
جایگزینی رجیستریها
برای سایر رجیستریها، کافی است دامنهی اصلی را با معادل همداکر جایگزین کنید.
مثال:
بهجای:
mcr.microsoft.com/dotnet/aspnet:9.0
از:
mcr.hamdocker.ir/dotnet/aspnet:9.0
استفاده کنید.
کشرجیستری پکیجها (repo.hmirror)
علاوه بر ایمیجهای داکر، کشرجیستری repo.hmirror برای مدیریت و دریافت پکیجها نیز ایجاد شده است. در حال حاضر، این کش برای موارد زیر در دسترس است:
npm: repo.hmirror.ir/npm
Python (pip): repo.hmirror.ir/python/simple/
Go (golang): repo.hmirror.ir/go
NuGet: repo.hmirror.ir/nuget
maven: repo.hmirror.ir/maven
با استفاده از این میرورها، وابستگی پروژه به منابع خارجی کاهش یافته و پایداری بیلد افزایش مییابد.
نحوه استفاده از میرورها در پروژهها و Dockerfile
بهصورت کلی، هر زبان یا ابزار مدیریت پکیج، یک متغیر محیطی (Environment Variable) یا فایل تنظیمات (Config) برای تعریف میرور دارد. لازم است این تنظیمات در Dockerfile یا کانفیگ پروژه اعمال شوند تا در زمان بیلد، وابستگیها از طریق میرورهای داخلی دریافت شوند.
مثال: (Python pip)
برای پایتون، میتوان از متغیر محیطی PIP_INDEX_URL استفاده کرد.
استفاده در Dockerfile:
در این حالت، تمامی پکیجهای پایتون از طریق میرور repo.hmirror.ir دریافت میشوند.
FROM python:3.11-slim
#تنظیم میرور pip
ENV PIP_INDEX_URL=https://repo.hmirror.ir/python/simple/
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]نکات مهم درباره فرایند بیلد و دیپلوی
- در صورتی که پروژه دارای وابستگی به اندپوینتهای خارجی باشد و از میرورها استفاده نشده باشد، فرایند بیلد با خطا مواجه خواهد شد.
- اگر دیپلوی خودکار (Auto Deploy) فعال باشد:
- هر بیلد، منجر به دیپلوی مجدد اپلیکیشن میشود.
- در صورت شکست بیلد، کانتینر متوقف شده و ممکن است اختلال در سرویس ایجاد شود.
- در صورتی که دیپلوی خودکار غیرفعال باشد:
- خطای بیلد باعث از کار افتادن اپلیکیشن در حال اجرا نخواهد شد.
بنابراین، توصیه میشود پیش از فعالسازی دیپلوی خودکار، اطمینان حاصل کنید که تمامی وابستگیها از طریق کشرجیستریها و میرورها تأمین میشوند.
منابع تکمیلی
برای آشنایی بیشتر با نحوه بیلد اپلیکیشنها در شرایط اختلال اینترنت، مطالعه مستند زیر پیشنهاد میشود:
راهنمای بیلد اپلیکیشن در زمان اختلال اینترنت
جمعبندی
استفاده از کشرجیستریها و میرورهای همداکر و همروش، نقش مهمی در افزایش پایداری، امنیت و سرعت بیلد و دیپلوی اپلیکیشنها دارد. با رعایت ساختارهای معرفیشده در این مستند و جایگزینی منابع خارجی، میتوانید از بروز خطاهای بیلد و اختلال در سرویس جلوگیری کنید.