Legacy `ENV key value` with a multi-word value becomes an invalid `key=value`
Ya se ha fusionado un pull request relacionado.
- #74 de @RyoKusnadi — fusionado
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 84/100
Línea de trabajo
Empieza rastreando cómo dockerfmt analiza y convierte las instrucciones obsoletas ENV key value; luego busca las pruebas del formateador sobre el manejo de ENV. Reproduce el comportamiento con el ejemplo JAVA_OPTS proporcionado y añade cobertura para un valor de varias palabras. Se considera terminado cuando el formateo produce una sintaxis Dockerfile válida que se puede compilar y volver a formatear.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Go
- Estrellas
- 626
- Forks
- 23
- Merge medio
- 3 d 17 h
- PR fusionados (30 d)
- 9
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
-
/shutdown/ready can fail to return an HTTP response when readiness takes longer than the server write timeoutPosiblemente ocupada @floriankoch la tomó hoy. Abiertotriage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
envoyproxy/gateway#10562 ·
Los mantenedores suelen responder en 1 día
-
Adding an LDAP group reports every search failure as "LDAP Group DN is not found"Posiblemente ocupada @Daksha1611 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100