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