Dockerfile-ի exec ձևը․ curl --noproxy * փոխանցել առանց shell-ի չակերտների
Exec ձևում յուրաքանչյուր JSON տող մեկ արգումենտ է։ Լրացուցիչ shell չակերտները կարող են փոխել այն արժեքը, որը curl-ը ստանում է --noproxy-ի համար։
Dockerfile-ի exec ձևում JSON զանգվածն արդեն իսկ արգումենտների ցանկն է․
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Այստեղ curl-ը ստանում է --noproxy և * որպես առանձին արգումենտներ։ Աստղանիշը չի ընդլայնվում ֆայլերի անունների, քանի որ ոչ մի հրամանի shell չի մեկնաբանում այս ձևը։
Մի դրեք ընտրանքը և արժեքը մեկ JSON տողի մեջ։ Նաև մի ավելացրեք բառացի միակ չակերտներ տողի ներսում միայն այն պատճառով, որ տերմինալի օրինակը դրանք օգտագործել է shell-ի պաշտպանության համար։ Այդ չակերտները կարող են դառնալ ծրագրին փոխանցվող արժեքի մաս։
Shell ձևն ունի այլ սահման․ այն ներառում է shell, ուստի չակերտների և ընդլայնման կանոններն այնտեղ նշանակություն ունեն։ Exec ձևի հրամանից գործարկված բացահայտ shell-ը վերադարձնում է այդ սահմանը։
curl-ում --noproxy * նշանակում է շրջանցել պրոքսին բոլոր հոսթերի համար։ Դա երթուղային ընտրություն է, ոչ թե արգումենտի ձևաչափի ընդհանուր թեստ։ Օգտագործեք այն միայն այն դեպքում, երբ ուղիղ ուղին է նպատակային քաղաքականությունը։ Եթե ձեզ անհրաժեշտ է ավելի նեղ շրջանցում, տրամադրեք համապատասխան արժեքը նույն մեկ արգումենտ մեկ տարրի կառուցվածքում։