Exec форма в Dockerfile: подаване на curl --noproxy * без кавички на шела
В exec форма всеки JSON низ е един аргумент. Допълнителните кавички на шела могат да променят стойността, която curl получава за --noproxy.
В exec форма на Dockerfile JSON масивът вече е списъкът с аргументи:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Тук curl получава --noproxy и * като отделни аргументи. Звездичката не се разгръща в имена на файлове, защото никоя командна обвивка не интерпретира тази форма.
Не поставяйте опцията и стойността в един JSON низ. Не добавяйте и буквални единични кавички вътре в низа само защото пример в терминал ги е използвал за защита на шела. Тези кавички могат да станат част от стойността, подадена на програмата.
Формата с шел има друга граница: тя включва шел, затова там важат правилата за кавички и разгръщане. Явен шел, стартиран от команда в exec форма, връща тази граница.
Значението на --noproxy * в curl е да заобиколи проксито за всички хостове. Това е избор на маршрут, а не общ тест за формат на аргументите. Използвайте го само когато директният маршрут е желаната политика. Ако ви трябва по-тясно заобикаляне, подайте съответната стойност в същата структура с един аргумент на елемент.