Forma exec di Dockerfile: passare curl --noproxy * senza virgolette della shell
Nella forma exec, ogni stringa JSON è un argomento. Virgolette della shell aggiuntive possono cambiare il valore che curl riceve per --noproxy.
Nella forma exec del Dockerfile, l'array JSON è già l'elenco degli argomenti:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Qui curl riceve --noproxy e * come argomenti separati. L'asterisco non viene espanso in nomi di file perché nessuna shell di comandi interpreta questa forma.
Non mettere l'opzione e il valore in un'unica stringa JSON. Non aggiungere nemmeno virgolette singole letterali dentro la stringa solo perché un esempio da terminale le ha usate per proteggere la shell. Quei caratteri di virgoletta possono diventare parte del valore passato al programma.
La forma shell ha un altro confine: coinvolge una shell, quindi le regole di quoting ed espansione lì contano. Una shell esplicita avviata da un comando in forma exec riaggiunge quel confine.
Il significato di --noproxy * in curl è bypassare il proxy per tutti gli host. È una scelta di instradamento, non un test generico del formato degli argomenti. Usalo solo quando la rotta diretta è la politica desiderata. Se ti serve un bypass più ristretto, fornisci il valore corrispondente nella stessa struttura con un argomento per elemento.