| containerignore(5) | راهنمای کاربری کانتینر | containerignore(5) |
نام (NAME)
containerignore - پروندههای نادیدهگیری محتوا در دایرکتوری زمینه ساخت buildah یا podman
مقدمه (INTRODUCTION)
پیش از اینکه موتورهای کانتینر تصویری را بسازند، به دنبال فایلی به نام .containerignore یا .dockerignore در دایرکتوری ریشه زمینه ساخت (context) میگردند. اگر یکی از این فایلها وجود داشته باشد، ابزار خط فرمان زمینه را به گونهای اصلاح میکند که فایلها و دایرکتوریهای منطبق با الگوهای مشخصشده در این فایل کنار گذاشته شوند. این کار از افزودن ناخواسته آنها به تصویر با استفاده از دستورالعملهای ADD یا COPY جلوگیری میکند.
ابزار خط فرمان، فایل .containerignore یا .dockerignore را به عنوان فهرستی از الگوها که با خط جدید از یکدیگر جدا شدهاند (مشابه الگوهای تطبیق فایل glob در شلهای یونیکس) تفسیر میکند. برای اهداف تطبیق، ریشه زمینه ساخت به عنوان هر دو دایرکتوری کاری و دایرکتوری ریشه در نظر گرفته میشود. برای نمونه، الگوهای /foo/bar و foo/bar هر دو فایل یا دایرکتوری با نام bar در زیردایرکتوری foo از PATH یا در ریشه مخزن git واقع در URL را کنار میگذارند. هیچکدام مورد دیگری را مستثنی نمیکنند.
اگر خطی در فایل .containerignore یا .dockerignore با کاراکتر # در ستون ۱ آغاز شود، آن خط به عنوان توضیح (کامنت) در نظر گرفته شده و پیش از تفسیر توسط ابزار خط فرمان نادیده گرفته میشود.
مثالها (EXAMPLES)
در اینجا نمونهای از یک فایل .containerignore آورده شده است:
# comment */temp* */*/temp* temp?
این فایل رفتار ساخت زیر را ایجاد میکند:
- # comment
- نادیده گرفته میشود.
- */temp*
- فایلها و دایرکتوریهایی را که نام آنها با temp در هر زیردایرکتوری بیواسطه ریشه آغاز میشود کنار میگذارد. برای نمونه، فایل معمولی somedir/temporary.txt/ و دایرکتوری somedir/temp/ کنار گذاشته میشوند.
- */*/temp*
- فایلها و دایرکتوریهای آغازشونده با temp از هر زیردایرکتوری را که دو سطح پایینتر از ریشه باشد کنار میگذارد. برای نمونه، somedir/subdir/temporary.txt/ کنار گذاشته میشود.
- temp?
- فایلها و دایرکتوریها در دایرکتوری ریشه را که نام آنها دارای یک کاراکتر افزوده پس از temp باشد کنار میگذارد. برای نمونه، tempa/ و tempb/ کنار گذاشته میشوند.
تطبیق با استفاده از قواعد filepath.Match در زبان Go انجام میشود. در یک مرحله پیشپردازش، فاصلههای خالی ابتدا و انتهای خطوط حذف شده و عناصر . و .. با استفاده از filepath.Clean در Go برطرف میشوند. خطوطی که پس از پیشپردازش خالی بمانند نادیده گرفته میشوند.
فراتر از قواعد filepath.Match در Go، داکر همچنین از رشته نویسه عام ویژه ** پشتیبانی میکند که با هر تعداد دایرکتوری (شامل صفر) تطبیق داده میشود. برای نمونه، */.go تمام فایلهایی را که به .go ختم شده و در تمامی دایرکتوریها، از جمله ریشه زمینه ساخت یافت شوند، کنار خواهد گذاشت.
خطوطی که با علامت تعجب (!) آغاز میشوند میتوانند برای ایجاد استثنا در موارد کنارگذاشتهشده به کار روند. در زیر نمونهای از فایل .containerignore آورده شده است که از این سازوکار استفاده میکند:
*.md !README.md
تمام فایلهای markdown به جز README.md از زمینه ساخت کنار گذاشته میشوند.
محل قرارگیری قواعد استثنای ! بر رفتار تأثیرگذار است: آخرین خط در .containerignore که با یک فایل مشخص مطابقت پیدا کند، تعیین میکند که آیا آن فایل در ساخت گنجانده شود یا کنار گذاشته شود. مثال زیر را در نظر بگیرید:
*.md !README*.md README-secret.md
هیچ فایل markdown در زمینه گنجانده نمیشود به جز فایلهای README به غیر از README-secret.md.
اکنون این مثال را در نظر بگیرید:
*.md README-secret.md !README*.md
همه فایلهای README گنجانده میشوند. خط میانی هیچ تأثیری ندارد زیرا !README*.md با README-secret.md مطابقت دارد و در انتها آمده است.
حتی میتوانید از فایل .containerignore برای کنار گذاشتن فایلهای Containerfile یا Dockerfile و .containerignore استفاده کنید. این فایلها همچنان به دیمن ارسال میشوند زیرا برای انجام کار خود به آنها نیاز دارد، اما دستورالعملهای ADD و COPY آنها را درون تصویر کپی نخواهند کرد.
در نهایت، ممکن است بخواهید به جای تعیین فایلهای کنارگذاشتهشده، مشخص کنید چه فایلهایی باید در زمینه گنجانده شوند. برای رسیدن به این هدف، * را به عنوان نخستین الگو مشخص کنید و به دنبال آن یک یا چند الگوی استثنای ! قرار دهید.
همچنین ببینید (SEE ALSO)
تاریخچه (HISTORY)
سپتامبر ۲۰۲۱، گردآوریشده توسط Dan Walsh (dwalsh at redhat dot com) بر اساس مستندات docker.com .dockerignore.
| سپتامبر ۲۰۲۱ |