چگونه از متغیرهای محیطی در آرایه ENTRYPOINT داکرفایل استفاده کنیم؟

mohsen2 هفته قبل
ارسال شده در
docker

فرض کنید که می خواهیم در بخش ENTRYPOINT داکر فایل مانند زیر به جای world از یک متغیر محیطی استفاده کنیم.

      ENTRYPOINT ["./greeting", "--message", "Hello, world!"]

    

که در آن world مقداری است که از متغیر محیطی گرفته می‌شود. اگر سعی کنیم با جایگزین کردن "Hello, $MY_VARIABLE" در دستور بالا این کار را انجام دهیم، این کار بدرستی عمل نمی کند.

برای استفاده صحیح از متغیرهای محیطی در Docker، ضروری است که متوجه باشید شکل exec از ENTRYPOINT به همان شکل، در دستور shell عمل نمی‌کند. در واقع، زمانی که از شکل exec استفاده می‌کنید، Docker دستورات شما را داخل یک شل اجرا نمی‌کند، بنابراین تفسیر متغیرهای محیطی مانند $MY_VARIABLE انجام نخواهد شد.

به منظور انجام تفسیر متغیرهای محیطی، دو راه برای حل مشکل وجود دارد:

1. استفاده از شکل shell:

می‌توانید به سادگی از شکل shell استفاده کنید و متغیرها در این روش تفسیر می شوند. به عنوان مثال:

      ENTRYPOINT ./greeting --message "Hello, $MY_VARIABLE!"

    

این دستور به طور صحیح متغیر $MY_VARIABLE را در زمان اجرا تفسیر می‌کند.

2. اجرای اسکریپت shell:

راه دیگر اجرای یک اسکریپت شل است، بدین صورت که ابتدا یک اسکریپت shell می سازیم و مقادیر مورد نظر را به عنوان ورودی به آن می دهیم. نمونه‌ای از این روش به صورت زیر است:

      RUN echo "#!/bin/bash \n ./greeting --message \"Hello, ${ADDRESSEE}\"" > ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

    

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

رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!