021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

بهترین روش برای نوشتن داکرفایل ( pipe – stdin )

داکر این قابلیت را داراست که یک ایمیج را با pipe کردن داکرفایل از طریق stdin با یک build context محلی یا از راه دور بسازد.

Pipe کردن داکر فایل از طریق  stdin (ورودی استاندارد) هنگامی استفاده میشود که شما بخواهید بدون نوشتن داکرفایل در دیسک یک ایمیج بیلد کنید و یا شما داکرفایلی میسازید و تنها یکبار از آن استفاده میکنید و دیگر نیازی به آن ندارید.

مثال های این بخش برای راحتی از here documents استفاده میکنند ولی از روش های دیگری هم میتوانید استفاده کنید.
برای مثال دستور زیر معادل است با:

echo -e 'FROM busybox\nRUN echo "hello world"' | docker build –
docker build -<<EOF
FROM busybox
RUN echo "hello world"
EOF

شما میتوانید نمونه را با دستورات مورد نظر خود جایگزین کنید.

ساخت یک ایمیج با داکرفایل از طریق stdin بدون ارسال build context

با این سینتکس شما میتوانید با استفاده از یک داکرفایل از طریق stdin بدون ارسال هیچگونه فایل اضافه ای به عنوان build context یک ایمیج بسازید.
خط تیره ” – ” مکانی است که باید path و یا مسیر قرار بگیرد و به داکر دستور میدهد که build context را بخواند (که فقط حاوی داکرفایل است).
این کار بجای دایرکتوری از طریق stdin انجام میشود.

docker build [OPTIONS] -

مثال زیر یک داکرفایل را از طریق stdin به داکر داده و در نهایت یک ایمیج میسازد.
(هیچ پرونده دیگری به عنوان build context به daemon ارسال نمیشود.)

docker build -t myimage:latest -<<EOF
FROM busybox
RUN echo "hello world"
EOF

استفاده نکردن از build context زمانی به کارمان می‌آید که داکرفایل ما نیازی به کپی فایلی به ایمیج ندارد.
این کار سرعت بیلد(build) کردن ایمیج را بالا برده زیرا که هیچ فایلی به daemon ارسال نخواهد شد.

نکته: توجه داشته باشید اگر در این حالت داکرفایل ما از add  و یا copy استفاده کند build ناموفق خواهد ماند و ایمیج ساخته نمیشود.

# create a directory to work in
mkdir example
cd example

# create an example file
touch somefile.txt

docker build -t myimage:latest -<<EOF
FROM busybox
COPY somefile.txt .
RUN cat /somefile.txt
EOF

# observe that the build fails
...
Step 2/3 : COPY somefile.txt .
COPY failed: stat /var/lib/docker/tmp/docker-builder249218248/somefile.txt: no such file or directory

مقالات مرتبط:
بهترین روش ها برای نوشتن داکرفایل(build context)
بهترین روش ها برای نوشتن داکرفایل

همچنین شما میتوانید از اینجا و اینجا سایر مقالات در مورد داکر را مطالعه کنید.

محمد حجازی

31 مطلب منتشر شده

محمد حجازی هستم برنامه نویس و علاقمند به تکنولوژی و کامپیوتر. در تلاشیم که همه با هم یه قدم در راستای گسترش علم برداریم.

درباره این مطلب نظر دهید !

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

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
3
%69
تخفیف

آموزش برنامه نویسی پایتون

35,000 تومان
2