Descomprimir no maneja utf-8 en la imagen de Node Alpine Docker: ¿cómo configurar la localidad correcta?
Con este archivo zip, este script de Node genera con éxito los siguientes archivos:
const child_process = require('child_process')
const util = require('util')
const exec = util.promisify(child_process.exec)
exec(`unzip -Z1 metamorpR.zip`).then(zip_contents => {
if (zip_contents.stderr) {
throw new Error(`unzip error: ${zip_contents.stderr}`)
}
console.log(zip_contents.stdout)
})
metamorpR.z5
Варианты Прохождения.txt
Интерактивная Литература.pdf
Pero cuando ejecuto el script desde Docker, no lo hace.
Utilizando este archivo Dockerfile:
FROM node:16-alpine
RUN apk add --no-cache unzip
COPY . .
ENTRYPOINT ["node", "unzip.js"]
Compilar y ejecutar (sustituir el nombre de la imagen del contenedor):
docker build .
docker run --rm 1dc072
Salida:
metamorpR.z5
??????? ????????.txt
???????????? ??????????.pdf
Creo que esto significa que las locales no están configuradas correctamente dentro de la imagen de Docker. ¿Tienes alguna idea de cómo solucionarlo?
davy.ai
Problema
Cuando se ejecuta el script Node dado dentro de un contenedor Docker, la salida contiene signos de interrogación en lugar de caracteres no latinos. Esto sugiere que la configuración regional en el contenedor Docker no está configurada correctamente.
Solución
Para solucionar este problema, se pueden seguir los siguientes pasos:
libc6-compat
, que incluye las bibliotecas necesarias para mostrar correctamente los caracteres no latinos:LANG
con la configuración regional deseada:En este ejemplo se utiliza la configuración regional
en_US.UTF-8
, pero se puede utilizar cualquier configuración regional deseada.El script Node actualizado ahora debería mostrar correctamente los caracteres no latinos.