استفاده از پروکسی در dockerfile
متاسفانه برای استفاده از داکر در ایران می بایست از پراکسی و یا وی پی ان استفاده نمایید. همچنین سرویس دهندگانی نیز وجود دارند که میتوانید با تغییر آدرس های dns خود مشکل تحریم را رفع نمایید. اما این مورد برای build یک Dockerfile کمی متفاوت است. فرض کنید یک Dockerfile دارید که در دستورات آن (RUN) میبایست از یک منبع تحریمی پکیجی را دانلود نمایید. در صورتیکه شما از پراکسی برای استفاده از امکانات داکر از طریق تنظیم در systemd استفاده میکنید، بدانید که این تنظیمات در زمان build یک Dockerfile کاربرد نخواهد داشت!
در ادامه دو روش برای استفاده از پراکسی در زمان build یک Dockerfile گفته می شود.
روش اول: با استفاده از تعریف build-arg
در این روش میبایست اطلاعات پراکسی خود را در دستور build وارد نمایید.
sample_proxy_url: http://username:password@10.10.10.20:1234
$ docker build \ --force-rm \ --build-arg HTTP_PROXY=http://username:password@10.10.10.20:1234 \ --build-arg HTTPS_PROXY=http://username:password@10.10.10.20:1234 \ -t myimagename:mytag .
توجه: درصورتیکه پراکسی با آرگومان ها بالا بدرستی کار نکرد، نام ها را به http_proxy و https_proxy تغییر دهید.
اگر از socks پروکسی استفاده میکنین دستور بیلد و اینطوری اجرا کنین:
$ docker build \ --force-rm \ --build-arg HTTP_PROXY=socks5h://10.10.10.20:8080 \ --build-arg HTTPS_PROXY=socksh5://10.10.10.20:8080 \ -t myimagename:mytag .
روش دوم: تعریف پراکسی در Dockerfile
در این روش می توانید پراکسی را به عنوان environment variable تعریف نمایید.
CentOS
ENV http_proxy=username:password@10.10.10.20:1234 ENV https_proxy=username:password@10.10.10.20:1234
Ubuntu
ENV http_proxy 'http://username:password@10.10.10.20:1234' ENV https_proxy 'http://username:password@10.10.10.20:1234'
توجه: در روش دوم پراکسی در ایمیج نهایی تنظیم می شود. همچنین اگر Dockerfile ایجاد شده را شخص دیگری build نماید ترافیک به سرور پراکسی ارسال می شود! استفاده از روش اول پیشنهاد می شود.