Dockerfile exec-vorm: curl --noproxy * doorgeven zonder shell-aanhalingstekens
In de exec-vorm is elke JSON-string één argument. Extra shell-aanhalingstekens kunnen de waarde veranderen die curl voor --noproxy ontvangt.
In de Dockerfile exec-vorm is de JSON-array al de argumentlijst:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Hier ontvangt curl --noproxy en * als afzonderlijke argumenten. De asterisk wordt niet uitgebreid naar bestandsnamen omdat geen enkele commandoshell deze vorm interpreteert.
Zet de optie en de waarde niet in één JSON-string. Voeg ook geen letterlijke enkele aanhalingstekens binnen de string toe alleen omdat een terminalvoorbeeld ze voor shell-bescherming gebruikte. Die aanhalingstekens kunnen deel worden van de waarde die aan het programma wordt doorgegeven.
De shell-vorm heeft een andere grens: er is wel een shell bij betrokken, dus regels voor aanhalingstekens en expansie gelden daar. Een expliciete shell gestart vanuit een commando in exec-vorm voegt die grens weer toe.
De betekenis van --noproxy * bij curl is de proxy omzeilen voor alle hosts. Dat is een routeringskeuze, geen algemene test van argumentformaat. Gebruik het alleen wanneer de directe route het bedoelde beleid is. Als je een smallere omzeiling nodig hebt, geef dan de bijpassende waarde in dezelfde structuur van één argument per element.