В exec-форме Dockerfile массив JSON уже является списком аргументов:

CMD ["curl", "--noproxy", "*", "https://example.com/"]

Здесь curl получает --noproxy и * как отдельные аргументы. Звёздочка не разворачивается в имена файлов, потому что ни одна командная оболочка не интерпретирует эту форму.

Не помещайте опцию и значение в одну строку JSON. Не добавляйте также буквальные одинарные кавычки внутрь строки только потому, что пример в терминале использовал их для защиты оболочки. Эти символы кавычек могут стать частью значения, передаваемого программе.

У формы оболочки другая граница: она действительно включает оболочку, поэтому правила кавычек и разворачивания там важны. Явная оболочка, запущенная из команды в exec-форме, возвращает эту границу.

Значение --noproxy * в curl — обходить прокси для всех хостов. Это выбор маршрутизации, а не общая проверка формата аргументов. Используйте его только тогда, когда прямой маршрут является желаемой политикой. Если вам нужно более узкое обходное решение, передайте соответствующее значение в той же структуре один аргумент на элемент.

Похожие статьи