CodeCrafters
776 subscribers
90 photos
50 videos
42 files
170 links
Download Telegram
وب سایت کانال https://codecrafters.ir

لیست هشتک‌ها در کانال رو در زیر براتون خواهم گذاشت و آپدیت خواهد شد


#design_patterns الگوهای طراحی

#postgresql پستگرس

#k8s کوبرنتیز

#agile اجایل
#scrum

#algorithm الگوریتم

#video

#meeting متینگ‌

#principles اصول کدنویسی

#project_managment_system مدیریت تیم

#free خارج از مبحث کامپیوتر


#app برنامه‌های کاربردی

#Git #actions مباحث مربوط به گیت و گیتلب

#conda #env کار با

#Docker مباحث مربوط به داکر

#AI #ML مباحث هوش مصنوعی

#book معرفی کتاب

#monitoring بررسی وضعیت سیستم و کد

#concurrency همزمانی کتاب grokking concurrency


#blovkchain #web3

#DDD #domain_driven_design

#BDD #behavior_driven_development

#soa #sso #microservice


@Code_Crafters

Git Hub:
https://github.com/CodeCrafters-ir/
👍1
داکر ، پلتفرم اوپن سورسی که به ما در توسعه دادن (Develop) ، انتقال دادن (Ship) و اجرا (Run) کمک میکنه، یکی از فواید داکر ، ایزوله سازی اپ ها هستش این بدین معنی است که شما میتوانید اپ های خود را مستقل از سیستم عامل اجرا کنید.

🔆 ساختار داکر چگونه است؟

🔅 داکر دارای یک هسته و دو Application می باشد ، داکر کلاینت و داکر Cli ، که هردو آنها به هسته یعنی Docker-Daemon درخواست میدهند ، اگر شما میخواید یک ایمیج را Pull کنید یا حتی یک ایمیج را اجرا کنید ، باید به هسته دستور اجرا شدن را بدید. نوع ارتباط بین کلاینت و هسته با Rest Api می باشد.


🔆 ماشین مجازی یا داکر؟

🔅داکر بر خلاف ماشین مجازی (Virtual Machine) نیازی به Hypervisor ندارد و کانتینر شمارو بصورت مستقیم روی سیستم عامل و همچنین با پراسس جدیدی اجرا میکند که باعث سبک تر بودن اپ (چه از لحاظ مصرفی و چه از لحاظ سرعت ) نسبت به ماشین مجازی میشود.


🔆 اپ ما چگونه در داکر اجرا میشود؟

🔹 1- در ابتدا شما باید بوسیله ی Docker Image یک ایمیج برای خودتون بسازید ، این ایمیج خود ، ساختار چند لایه دارد ، اپ شما و ایمیج های دیگر استفاده شده بصورت جدا جدا گرفته و در مجموع یک ایمیج را شکل میدهند.

🔸2 - بعد از ساختن ایمیج ، شما میتوانید آن را اجرا کنید ، داکر قابلیت اجرای چندین Instance از یک ایمیج را دارد که آن هارا بصورت کانتینر از هم مجزا میکند. که این یعنی شما میتوانید 4 پراسس از یک اپلیکیشن را اجرا کنید.

🔹3 - همانطور که در مورد دوم گفته شد ، شما بعد از اجرای ایمیج خود در اصل یک کانیتنر می سازید ، این کانتینر بصورت کاملا ایزوله از ایمیج ساخته میشود و بصورت پراسس اجرا میشود اینجوری تمامی تغییرات اعمال شده در کانتینر روی ایمیج تاثیری نمیزارد.


♦️ داکر سرویس ، یک ابزار برای مدیریت چندین کانیتنر بصورت همزمان است ، همچنین با داکر سرویس میتوانید از قابلیت های داکر Swram نیز استفاده کنید که در پست های آینده راجب آن توضیح میدهیم.

#Docker
#Guide
#Beginner

@code_crafters
9👍2
داکر و ۱۳ ترفند مهم در آن


داکر به یک ابزار مهم خط لوله برای توسعه، استقرار و تست برنامه در دنیای مدرن مهندسی تبدیل شده، در حالیکه بیشتر کاربران با مسائل پایه و دستورات اولیه آن اشنا هستند اینجا وجود داره یکسری ویژگی‌ها و ترفندهایی که کار کردن رو ساده و توسعه رو بهتر میکنه

در اینجا 13 ترفند داکر رو با موضوعیتی برای مهندسین ارشد بررسی میکنیم که فراتر از اصول اولیه هستند و راه های قدرتمند و کمتر شناخته شده ای را برای استفاده از داکر ارائه معرفی میکنیم


1-ساخت چند مرحله‌ای برای تصاویر (image) کارآمد
ساخت‌های چند مرحله‌ای در داکر یک تکنیک قدرتمند برای ایجاد تصاویری ناب و ایمن‌تر با جدا کردن محیط ساخت از محیط تولید در همان داکرفایل است

ساخت چندمرحله‌ای چیست
ساخت چندمرحله‌ای در ساخت تصاویر این امکان رو به ما میدن که در داکر فایل از چند دستور FROM استفاده کنیم، هر دستورالعمل FROM میتونه از بیس متفاوتی استفاده کنه و هر استیج نام خودش رو داشته باشه، بدینگونه شما میتونید مصنوعات رو از یک استیج به دیگری کپی کرده و هر قسمت رو که لازم ندارید پشت سر بگذارید

# Syntax for multi-stage builds
# Stage 1: Build the application
FROM golang:1.15 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .

# Stage 2: Create the final image
FROM alpine:latest
COPY --from=builder /app/myapp /app/myapp
ENTRYPOINT ["/app/myapp"]


این مثال یک ساخت ساده چند مرحله ای برای یک برنامه Go را نشان می دهد. مرحله ساخت از یک تصویر گولنگ برای کامپایل برنامه استفاده می کند و مرحله نهایی یک تصویر سبک وزن alpine رو می سازه که فقط شامل باینری کامپایل شده هستش


چه وقتی شما از ساخت چند مرحله‌ای استفاده میکنید
کاهش اندازه تصویر: زمانی که فرآیند ساخت برنامه شما شامل کامپایل کد یا شامل وابستگی های زمان ساخت است که در زمان اجرا مورد نیاز نیستند

افزایش امنیت: برای به حداقل رساندن سطح حمله تصویر نهایی خود با حذف ابزارها و فایل هایی که برای اجرای برنامه مورد نیاز نیستند

جداسازی محیط های ساخت: زمانی که نیاز به ساخت برنامه های کاربردی در یک محیط خاص دارید اما می خواهید آنها را در محیط دیگری اجرا کنید.


بهترین رویکرد

بهینه سازی استفاده از کش ساخت:
دستورات کپی را سفارشی کنید و با دقت اجرا کنید تا ذخیره لایه ها به حداکثر برسد

کوچک کردن اندازه تصویر نهایی: فقط مصنوعات مورد نیاز برای اجرای برنامه را در تصویر نهایی کپی کنید

مراحل ساخت برچسب: از مراحل نامگذاری شده برای بهبود خوانایی و قابلیت نگهداری داکرفایل خود استفاده کنید

دام‌های رایج
پیچیدگی بیش از حد: از ساخت‌های پیچیده چند مرحله‌ای غیرضروری که می‌تواند منجر به نگهداری داکرفایل دشوار شود، اجتناب کنید

نادیده گرفتن زمینه ساخت: حواستان به زمینه ساختی باشد که به daemon داکر ارسال می کنید، زیرا زمینه های بزرگ غیر ضروری می توانند روند ساخت را کند کنند

لینک وبسایت

#docker

@code_crafters
2👍1
2-له کردن (Squashing) لایه‌های ایمیج داکر
له کردن لایه های تصویر در داکر تکنیکی است که می تواند اندازه تصاویر داکر شما را به میزان قابل توجهی کاهش دهد.با ترکیب تمام لایه های تولید شده در طول ساخت تصویر در یک لایه، می‌توانید ذخیره سازی و توزیع تصاویر داکر خود را بهینه کنید

له کردن چیست
هنگامی که یک تصویر داکر می سازید، هر دستورالعمل در داکرفایل یک لایه جدید ایجاد می کند.این لایه‌ها می‌توانند داده‌های غیرضروری را جمع‌آوری کنند که منجر به ایجاد تصاویر متورم می‌شود. (له کردن) Squashing تعداد لایه ها را در تصاویر داکر با ادغام آنها در یک لایه کاهش می دهد، که می تواند به حداقل رساندن اندازه تصویر کمک کند

چگونه از له کردن استفاده کنیم
برای له کردن لایه‌های تصویر، می‌توانید هنگام ساخت تصاویر خود با فعال کردن Docker BuildKit از فلگ sqash-- استفاده کنید
# Enable Docker BuildKit
export DOCKER_BUILDKIT=1

# Build and squash the image
docker build --tag myapp:latest --squash .


چه وقتی از له کردن استفاده کنیم
بهینه سازی اندازه تصویر: زمانی که نیاز به کاهش اندازه تصویر نهایی داکر خود دارید، از squashing استفاده کنید، به خصوص هنگام توزیع تصاویر در یک شبکه یا ذخیره آنها در یک رجیستری

ساده سازی لایه های تصویر: اگر داکرفایل شما حاوی دستورالعمل های اجرا یا کپی زیادی است که تعداد لایه ها و اندازه کلی تصویر را افزایش می دهد


بهترین رویکرد
له کردن انتخابی: در نظر بگیرید که کدام تصاویر بیشتر از له کردن سود می برند. ممکن است برخی از لایه‌ها برای اهداف ذخیره‌سازی، به‌ویژه در حین توسعه، بدون شکست باقی بمانند.

مراقب ذخیره سازی باشید: Squashing می تواند بر مکانیسم کش لایه Docker تأثیر بگذارد. له کردن مکرر ممکن است منجر به زمان ساخت طولانی‌تر شود، زیرا داکر نمی‌تواند لایه‌های میانی را به طور موثر کش کند.

پیامدهای امنیتی: بدانید که له کردن ممکن است تاریخچه یک تصویر را پنهان کند. اطمینان حاصل کنید که لایه نهایی له شده سهوا حاوی داده های حساسی نیست که در لایه های میانی دور ریخته می شوند.

دام‌های رایج
استفاده بیش از حد در طول توسعه: له کردن پس از هر ساخت در طول توسعه می تواند به دلیل از بین رفتن مزایای ذخیره سازی، زمان ساخت را به طور قابل توجهی کاهش دهد.

نادیده گرفتن وضعیت آزمایشی: به یاد داشته باشید که ویژگی squash آزمایشی است و ممکن است در نسخه‌ها یا پیکربندی‌های مختلف داکر به طور مداوم رفتار نکند

لینک وبسایت

#docker

@code_crafters
2
3-docker buildkit secret

داکر BuildKit راه امن تری را برای رسیدگی به سکرت‌ها در طول فرآیند ساخت معرفی می کند و چالش استفاده از منابع خصوصی را بدون افشای آنها در تصویر نهایی برطرف می کند. قابلیت‌های مدیریت مخفی BuildKit به شما این امکان را می‌دهد که اطلاعات حساس را در طول ساخت بدون باقی ماندن ردی در لایه‌های تصویر ارسال کنید.

داکر buildkit سکرت چیست
یک ویژگی سیستم ساخت داکر buildkit است. این به شما این امکان رو میده تا اطلاعات مخفی و سکرت (مانند رمزهای عبور، کلیدهای خصوصی یا نشانه های API) را به طور ایمن به فرآیند ساخت منتقل کنید. این سکرت‌ها در تصویر نهایی یا در لایه‌های میانی ذخیره نمی‌شوند و فرآیند ساخت شما را امن‌تر می‌کنند


چگونه از داکر buildkit سکرت استفاده کنیم
برای استفاده از داکر BuildKit سکرت، ابتدا مطمئن شوید که Docker BuildKit فعال است.می توانید این کار را با تنظیم متغیر محیطی DOCKER_BUILDKIT=1 انجام دهید. سپس، از فلگ secret-- در طول فرآیند ساخت برای ارائه رازها استفاده کنید
# Enable Docker BuildKit
export DOCKER_BUILDKIT=1

# Build with a secret
docker build --secret id=mysecret,src=/path/to/secret/file.txt -t myapp:latest .


چه وقتی از داکر buildkit سکرت استفاده کنیم
دسترسی به مخازن خصوصی Git: زمانی که ساخت شما نیاز به pull کردن وابستگی ها از مخازن خصوصی دارد(یک پکیج خصوصی توسعه داده‌اید و در اکانت خودتون گذاشته‌اید)

استفاده از کلیدهای خصوصی: زمانی که نیاز به استفاده از کلیدهای خصوصی برای دسترسی SSH یا رمزگشایی فایل ها در حین ساخت دارید

توکن های API: زمانی که فرآیند ساخت شما شامل دسترسی به API هایی است که نیاز به احراز هویت دارند


بهترین رویکرد
به حداقل رساندن قرار گرفتن در معرض مخفیانه: فقط در صورت لزوم از اسرار استفاده کنید و از ثبت یا افشای آنها در مراحل میانی خودداری کنید

اسکوپ‌های سکرت: اسرار را به وضوح تعریف کرده و به مراحل ساخت خاصی که در آن مورد نیاز است، بسط دهید و خطر مواجهه را کاهش دهید

نسخه pinning : همیشه هنگام استفاده از ویژگی‌های BuildKit، نسخه نحو را در داکر خود پین کنید تا از سازگاری و پیش‌بینی‌پذیری اطمینان حاصل کنید.

دام‌های رایج:
کدگذاری بصورت سخت (hardcoding): از کدگذاری بصورتسخت یا استفاده از روش‌های منسوخ (مثلاً ARG برای انتقال سکرت) که ممکن است اطلاعات حساسی را در لایه‌های تصویر باقی بگذارند، خودداری کنید

در شرف پاکسازی: با بازرسی لایه‌های نهایی یا ایجاد سهوا لایه‌های ذخیره‌سازی با داده‌های مخفی، مطمئن شوید که هیچ باقی‌مانده مخفی در تصویر باقی نمانده است

توضیحات تکمیلی
ویژگی buildkit در نسخه‌های جدید داکر و داکرکامپوز بصورت پیش فرض فعال می باشد که با تکنیک‌های خاصی سرعت ایجاد تصاویر رو افزایش میده

در خصوص pinning قابلیتی که به شما این امکان رو میده تا از نسخه‌های خاصی از ابزارها و وابستگی‌ها استفاده کنند، که در یک فایل با نام build.yml نوشته میشه و در کنار داکرفایل قرار میگیرد برای مثال در پایتون و جنگو داکرفایل ما بصورت زیر می باشد
FROM python:3.9

RUN pip install --upgrade pip

RUN pip install django==4.1.5

COPY . /app

CMD python manage.py runserver 0.0.0.0:8000
و فایل build.yml ما بصورت زیر خواهد بود
build:
pins:
- name: python
version: "3.9"
- name: pip
version: "22.3.1"
- name: django
version: "4.1.5"
این فایل محدودیت استفاده از ابزار و نسخه خاص رو بر روی داکر ایجاد میکند، موجب افزایش امنیت و رعایت وابستگی‌ها میشه و ایمیج‌های تکرار شونده رو براتون بوجود میاره ، اما انعطاف شمارو در ساخت ایمیج پایین میاره

لینک وبسایت

#docker

@code_crafters
2👎1
4-اهرم dockerignore.
فایل .dockerignore نقش مهمی در بهینه‌سازی ساخت‌های Docker بازی می‌کند، زیرا به شما امکان می‌دهد الگوهایی را مشخص کنید که فایل‌ها و دایرکتوری‌ها را از متن ارسال شده به Daemon داکر حذف می‌کند. این مکانیسم می تواند به طور قابل توجهی روند ساخت را سرعت ببخشد، اندازه زمینه ساخت را کاهش دهد و با حذف فایل های حساس، امنیت را افزایش دهد

این dockerignore چیست
مانند gitignore.، فایل .dockerignore به داکر می‌گوید کدام فایل‌ها و دایرکتوری‌ها را هنگام ساختن یک تصویر نادیده بگیرد.این امر به ویژه مهم است زیرا هر فایلی که به عنوان بخشی از زمینه ساخت به Daemon داکر ارسال می شود، می تواند زمان ساخت و پیچیدگی غیر ضروری را به خصوص در پروژه های بزرگ افزایش دهد.

استفاده از dockerignore
یک فایل .dockerignore در ریشه پروژه خود، جایی که Dockerfile شما قرار دارد، ایجاد کنید. در این فایل، الگوهایی را برای فایل‌ها و دایرکتوری‌ها مشخص کنید تا از زمینه ساخت Docker حذف شوند.

نمونه ای از فایل .dockerignore
.git
.gitignore
Dockerfile*
*.md
node_modules
temp/


چه وقتی از dockerignore استفاده کنیم
مخازن بزرگ: برای پروژه هایی با حجم زیاد داده، به خصوص آنهایی که برای ساخت یا زمان اجرا مورد نیاز نیستند

اطلاعات حساس: برای حذف فایل‌های حاوی سکرت‌ها(env.) یا اطلاعات حساسی که نباید در زمینه ساخت Docker گنجانده شوند

دایرکتوری‌های وابستگی: برای زبان‌هایی که وابستگی‌ها را در فهرست‌های محلی دانلود می‌کنند (مانند venv در پایتون)، که اگر در حین ساخت، وابستگی‌ها را نصب می‌کنید، در زمینه ساخت مورد نیاز نیستند

بهترین رویکرد
مرتباً مرور کنید: به‌طور دوره‌ای فایل .dockerignore خود را بررسی کنید تا مطمئن شوید که با ساختار و الزامات پروژه شما به‌روز است

الگوهای واضح: از الگوهای صریح استفاده کنید تا فایل ها و دایرکتوری های مورد نظر را دقیقاً مطابقت دهند و از حذف ناخواسته اجتناب کنید

حفظ امنیت: از .dockerignore برای تقویت امنیت با اطمینان از اینکه فقط فایل های لازم در زمینه ساخت شما گنجانده شده است، استفاده کنید

دام‌های رایج
نادیده گرفتن .dockerignore: عدم استفاده یا پیکربندی صحیح فایل .dockerignore می تواند منجر به ساخت کند، اندازه تصویر بزرگتر و گنجاندن احتمالی اطلاعات حساس شود

حذف بیش از حد: در حالی که حذف فایل‌های غیر ضروری مهم است، مراقب باشید فایل‌هایی را که برای فرآیند ساخت ضروری هستند حذف نکنید، که می‌تواند منجر به شکست ساخت یا رفتار نادرست تصویر شود.

لینک وبسایت

#docker

@code_crafters
5-بررسی سلامت داکرفایل
اجرای چک های سلامت مستقیماً در داکرفایل روشی قدرتمند برای نظارت خودکار بر وضعیت عملیاتی کانتینرهای شما است. با تعریف بررسی های بهداشتی، داکر می تواند تصمیمات آگاهانه ای در مورد سلامت کانتینرها بگیرد و اقدامات مناسب را انجام دهد، مانند راه اندازی مجدد کانتینر معیوب یا جلوگیری از هدایت ترافیک به آن تا زمانی که سالم شود


بررسی سلامت داکرفایل چیست
بررسی سلامت داکر دستوری است که در داکرفایل مشخص شده است که داکر به صورت دوره ای برای بررسی سلامت یک کانتینر اجرا می کند. این دستور باید نشان دهد که آیا کانتینر به درستی کار می کند یا خیر، داکر وضعیت خروج از فرمان بررسی سلامت را برای تعیین وضعیت سلامت کانتینر تفسیر می کند: وضعیت خروج 0 به معنای سالم و غیر صفر به معنای ناسالم است

چگونه از بررسی سلامت داکرفایل استفاده کنیم
بررسی های سلامت در داکرفایل با استفاده از دستورالعمل HEALTHCHECK تعریف شده است. می‌توانید دستور اجرا، فاصله بین بررسی‌ها، زمان پایان هر چک، تعداد دفعات تکرار قبل از در نظر گرفتن سرویس ناسالم، و دوره شروع برای تثبیت کانتینر قبل از شروع بررسی‌های سلامت را مشخص کنید


نمونه داکرفایل با بررسی سلامت
این مثال یک بررسی سلامتی را روی ظرف Nginx تنظیم می‌کند و از curl برای درخواست صفحه اصلی هر 30 ثانیه استفاده می‌کند. اگر دستور سه بار پشت سر هم ناموفق باشد (صفحه به درستی برگردانده نشده است)، داکر ظرف را به عنوان ناسالم علامت گذاری می کند
Dockerfile
FROM nginx:latest


COPY nginx.conf /etc/nginx/nginx.conf

# Health check script
COPY health-check.sh /usr/share/nginx/html/health-check.sh

# Make the script executable
RUN chmod +x /usr/share/nginx/html/health-check.sh


EXPOSE 80

# Health check definition
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD /usr/share/nginx/html/health-check.sh

health-check.sh
#!/bin/bash


if curl -sSf http://localhost:80 > /dev/null; then
exit 0
else
exit 1
fi
چه وقتی از بررسی سلامت کانتینر استفاده کنیم
در دسترس بودن سرویس: زمانی که باید اطمینان حاصل کنید که یک سرویس در یک کانتینر در دسترس است و قبل از ارسال ترافیک به آن پاسخگو است

آمادگی وابستگی: در کاربردهای چند کانتینری، که در آن کانتینرهای خاصی به عملکرد کامل سایر کانتینرها بستگی دارند

سیستم های خود درمانی: برای ایجاد یک سیستم انعطاف پذیرتر که می تواند به طور خودکار ظروف ناسالم را راه اندازی مجدد کند

بهترین رویکرد
به حداقل رساندن تأثیر عملکرد: اطمینان حاصل کنید که دستور بررسی سلامت سبک است و تأثیر قابل توجهی بر عملکرد ظرف ندارد

دوره‌های شروع دقیق: یک دوره شروع واقعی را تنظیم کنید تا قبل از شروع شکست در بررسی‌های سلامت، زمان کافی برای شروع اولیه به برنامه خود بدهید

از نقاط پایانی سلامت خاص استفاده کنید: ترجیح می‌دهید از نقاط پایانی خاص (به عنوان مثال، /healthz) استفاده کنید که سلامت اجزای مختلف برنامه را بررسی می‌کند، نه فقط صفحه اصلی یا یک بررسی اولیه TCP

دام‌های رایج
دستورات پیچیده: از دستورات بیش از حد پیچیده بررسی سلامت که ممکن است غیرقابل اعتماد باشند یا عوارض جانبی غیرمنتظره ایجاد کنند، خودداری کنید

نادیده گرفتن وابستگی های خارجی: اگر سلامت کانتینر شما به خدمات خارجی بستگی دارد، مطمئن شوید که بررسی سلامت شما در دسترس بودن آنها را در نظر می گیرد و از مثبت کاذب جلوگیری می کند


یک نمونه برای داکرفایل جنگو
#----
# Use an official Python runtime as a parent image
FROM python:3.8

# Set environment variables
ENV PYTHONUNBUFFERED 1

# Set working directory
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed dependencies specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Expose port 8000 to the outside world
EXPOSE 8000

# Define the health check command
HEALTHCHECK --interval=5s --timeout=3s \
CMD curl --silent --fail localhost:8000/health-check || exit 1

# Run the Django application
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

#---


یک نمونه در داکرکامپوز
#---
version: '3'

services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "8000:8000"
restart: on-failure
healthcheck:
test: ["CMD-SHELL", "curl --silent --fail localhost:8000/health-check || exit 1"]
interval: 5s
timeout: 3s
retries: 3
#---


لینک وبسایت

#docker

@code_crafters
6-قالب بندی خروجی داکر CLI
رابط خط فرمان داکر (CLI) یک ویژگی قدرتمند برای سفارشی کردن خروجی دستورات با استفاده از گزینه formating-- فراهم می کند.این گزینه از زبان الگوی Go استفاده می کند تا به کاربران اجازه دهد دقیقاً نحوه ساختار خروجی را مشخص کنند و تجزیه یا ادغام با ابزارهای دیگر را آسان تر می کند

قالب بندی خروجی داکر CLI چیست
قالب‌بندی خروجی داکر CLI به شما امکان می‌دهد تا خروجی دستورات Docker را مطابق با نیازهای خود تنظیم کنید، با استفاده از زبان قالب Go برای تعیین فرمت خروجی. این ویژگی برای استخراج قطعات خاصی از اطلاعات از خروجی‌های فرمان پرمخاطب داکر، به‌ویژه هنگام خودکارسازی وظایف یا ادغام با خطوط لوله CI/CD بسیار ارزشمند است

چگونه از قالب بندی خروجی داکر CLI استفاده کنیم
فاگ format-- را می توان با دستورات مختلف داکر CLI برای سفارشی کردن خروجی آنها استفاده کرد.در اینجا مثالی از نحوه فهرست کردن همه شناسه‌های کانتینر با استفاده از قالب سفارشی آورده شده است:
docker ps --format '{{.ID}}'

این دستور شناسه‌های همه کانتینرهای در حال اجرا را، یکی در هر خط، بدون هیچ گونه اطلاعات یا هدر اضافی فهرست می‌کند

مثال پیشرفته: فهرست کردن تصاویر با ویژگی های خاص
در اینجا نحوه فهرست کردن تصاویر، نشان دادن تنها مخزن، برچسب و اندازه آنها در قالب جدول آمده است:
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

این دستور یک جدول با فرمت منظم از تصاویر Docker شما ایجاد می کند که فقط نام مخزن، برچسب و اندازه تصویر را نشان می دهد


چه وقتی از قالب بندی خروجی داکر CLI استفاده کنیم
اسکریپت و اتوماسیون: زمانی که نیاز به تجزیه خروجی های دستور Docker در اسکریپت ها یا ابزارهای اتوماسیون دارید

گزارش سفارشی: ایجاد گزارش یا داشبورد سفارشی که به اطلاعات خاصی از محیط Docker شما نیاز دارد

خروجی ساد: زمانی که می خواهید خروجی را برای وضوح ساده یا تمرکز بر جزئیات خاص ساده کنید

بهترین رویکرد
الگوسازی Go را درک کنید: برای استفاده مؤثر از گزینه‌های قالب‌بندی، با نحو قالب‌بندی Go آشنا شوید

از قالب بندی جدول برای خوانایی استفاده کنید: از قالب بندی جدول برای خروجی های قابل خواندن توسط انسان استفاده کنید، به خصوص هنگام به اشتراک گذاری اطلاعات با اعضای تیم

ترکیب با سایر ابزارهای یونیکس: برای پردازش قدرتمندتر، خروجی داکر فرمت شده را با ابزارهای یونیکس مانند grep، awk یا jq برای خروجی های JSON ترکیب کنید

دام‌های رایج
پیچیدگی بیش از حد: از ایجاد الگوهای بیش از حد پیچیده که خواندن و نگهداری آنها سخت است خودداری کنید. آن را تا حد امکان برای کار در دست ساده نگه دارید

قالب بندی ناسازگار: هنگام استفاده از فرمت های سفارشی در میان اسکریپت ها یا ابزارهای مختلف، برای جلوگیری از سردرگمی، سازگاری را حفظ کنید

لینک وبسایت

#docker

@code_crafters
یمدته دارم روی یک پروژه سنگین کار میکنم
قراره با مجموعه‌ای از پروژه‌های open source یک پلتفرم سازمانی و enterprise رو با تجمیع انواع سرویس‌ها و پروژه‌ها جهت نمونه اولیه بالا بیاریم و به نمایش جهت جذب سرمایه گذاری هندل کنیم

فعلا نمیتونم راجبش بهتون بگم برخلاف اصول اخلاقی هست ولی منتها بعد اینکه جذب سرمایه شد و یا حتی شکست خورد ذره ذره راجب اون پروژه‌های open source پست میزارم

حجم کانتینرها خیلی بالا رفته بود، حدود شصت کانتینر شده بود که مدیریت و مانیتور اونها داخل سرور و با bash خیلی سخت شده بود برام

به پیشنهاد یکی از دوستان (جا داره اینجا ازش تشکر کنم) یک کانتیر بالا آوردم portainer

یک پلتفرم تحت وب که میتونی باهاش کانتینرهات رو راحت مدیریت و مانیتورینگ کنی و تسلط یکپارچه قوی و خوبی از وضعیت موتور داکر هم داشته باشی رابط کاربری ساده و شیکی داره و بعنوان یک ابزار کمک دست بشدت مناسب هست


با دستور زیر رانش کنید

sudo docker run -d -p 9000:9000 --name portainer_ce --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data  docker.arvancloud.ir/portainer/portainer-ce:latest

در اولین درخواست پیوستن بهش ازتون نام کاربری و پسورد میخواد جهت یوزر ادمین حتما حتما یک نام و پسورد سخت انتخاب کنید چون میتونه براتون دردسرساز بشه اگه کوتاهی کنید


#free
#docker

@code_crafters
👍8