Dockerfile exec-form: skicka curl --noproxy * utan shell-citat
I exec-form är varje JSON-sträng ett argument. Extra shell-citat kan ändra det värde som curl tar emot för --noproxy.
I Dockerfile exec-form är JSON-arrayen redan argumentlistan:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Här tar curl emot --noproxy och * som separata argument. Stjärnan expanderas inte till filnamn eftersom ingen kommandoshell tolkar denna form.
Sätt inte alternativet och värdet i en enda JSON-sträng. Lägg inte heller till bokstavliga enkla citattecken inuti strängen bara för att ett terminalexempel använde dem för shell-skydd. Dessa citattecken kan bli en del av värdet som skickas till programmet.
Shell-formen har en annan gräns: den involverar ett shell, så regler för citat och expansion gäller där. Ett explicit shell som startas från ett kommando i exec-form lägger tillbaka den gränsen.
Betydelsen av --noproxy * i curl är att kringgå proxyn för alla värdar. Det är ett routingval, inte ett generellt test av argumentformat. Använd det bara när den direkta vägen är den avsedda policyn. Om du behöver en snävare kringgång, ange motsvarande värde i samma struktur med ett argument per element.