Legacy `ENV key value` with a multi-word value becomes an invalid `key=value`
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 84/100
Direzione di ricerca
Inizia ricostruendo come dockerfmt analizza e converte le istruzioni obsolete ENV key value, quindi trova i test del formatter relativi alla gestione di ENV. Riproduci il problema con l’esempio JAVA_OPTS fornito e aggiungi test per un valore composto da più parole. Il lavoro è completato quando la formattazione produce una sintassi Dockerfile valida che può essere compilata e formattata di nuovo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Converting a legacy ENV key value instruction to the key=value form breaks when the value contains spaces. The output is not a valid Dockerfile: docker build rejects it, and so does dockerfmt on the next run.
Reproduce
FROM alpine
ENV JAVA_OPTS -Xms256m -Xmx512m
dockerfmt Dockerfile
Actual
FROM alpine
ENV JAVA_OPTS=-Xms256m -Xmx512m
The original builds and sets JAVA_OPTS=-Xms256m -Xmx512m. docker build on the output, and dockerfmt run on it again, both fail with:
Error parsing file: Syntax error - can't find = in "-Xmx512m". Must be of the form: name=value
Expected
In the legacy form everything after the key is the value, so the converted instruction needs quotes:
ENV JAVA_OPTS="-Xms256m -Xmx512m"
Leaving the instruction in its legacy form would also be correct.
Impact
With --write the Dockerfile no longer builds. In a sample of about 450 real-world Dockerfiles, 112 lines used the legacy ENV form and one of them had an unquoted multi-word value.
Reproduced with v0.5.4 and with main at a5868c2.
- Lingua principale
- Go
- Stelle
- 626
- Fork
- 23
- Merge medio
- 6g 23h
- PR unite (30g)
- 3
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di reteps/dockerfmt
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
`MAINTAINER` to `LABEL` conversion does not escape embedded quotesForse già presa @RyoKusnadi l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Tutte le issue di reteps/dockerfmt
Issue simili
-
agent-butler-finding bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
jordansmall/spindrift#6414 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Icinga/icinga-kubernetes#294 ·
I maintainer di solito rispondono entro 4 giorni
-
Cluster details: the Control Plane version field has a different border color than its icon boxApertakind/design sig/ui
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
kubermatic/dashboard#8449 ·
I maintainer di solito rispondono entro 1 giorno
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
cli/cli#14962 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Model conformance driftApertamodel-drift
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno