Exec-форма Dockerfile: передача curl --noproxy * без кавычек оболочки
В exec-форме каждая строка JSON — это один аргумент. Лишние кавычки оболочки могут изменить значение, которое curl получает для --noproxy.
В exec-форме Dockerfile массив JSON уже является списком аргументов:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Здесь curl получает --noproxy и * как отдельные аргументы. Звёздочка не разворачивается в имена файлов, потому что ни одна командная оболочка не интерпретирует эту форму.
Не помещайте опцию и значение в одну строку JSON. Не добавляйте также буквальные одинарные кавычки внутрь строки только потому, что пример в терминале использовал их для защиты оболочки. Эти символы кавычек могут стать частью значения, передаваемого программе.
У формы оболочки другая граница: она действительно включает оболочку, поэтому правила кавычек и разворачивания там важны. Явная оболочка, запущенная из команды в exec-форме, возвращает эту границу.
Значение --noproxy * в curl — обходить прокси для всех хостов. Это выбор маршрутизации, а не общая проверка формата аргументов. Используйте его только тогда, когда прямой маршрут является желаемой политикой. Если вам нужно более узкое обходное решение, передайте соответствующее значение в той же структуре один аргумент на элемент.