web-dev-qa-db-fra.com

Comment configurer les paramètres régionaux au format Unicode dans un conteneur Docker Ubuntu 14.04?

J'ai installé un conteneur Ubuntu Trusty à l'aide de Docker, et lorsque je me connecte à celui-ci, je constate que les paramètres régionaux sont définis au minimum:

Sudo docker run -i -t <id> /bin/bash
root@<id>:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Je dois utiliser une locale nicode (par exemple celle en anglais américain, en_US.UTF-8).

J'ai essayé de modifier le fichier/etc/default/locale et de le mettre à l'intérieur:

# cat /etc/default/locale 
LANG=en_US.UTF-8

Mais même après avoir quitté le conteneur et revenir, les paramètres régionaux ne sont toujours pas définis correctement.

J'ai aussi essayé d'utiliser la commande update-locale, sans succès:

root@cab13a6abe4f:/# update-locale LANG=en_US.UTF-8
root@cab13a6abe4f:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Sur ma configuration locale, j'ai la configuration suivante:

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Comment puis-je avoir la même chose dans mon conteneur Docker?

Merci d'avance!

29
Pierre

Le fichier /etc/default/locale est chargé par PAM; voir /etc/pam.d/login par exemple. Cependant, PAM n'est pas appelé lors de l'exécution d'une commande dans un conteneur Docker. Pour configurer les paramètres régionaux, définissez simplement la variable d’environnement appropriée dans votre fichier Docker. Exemple:

FROM ubuntu:trusty
ENV LANG en_US.UTF-8
CMD ["/bin/bash"]
18
Andreas Veithen

J'utilise ceci dans mon Dockerfile:

# Set the locale
RUN locale-gen en_US.UTF-8  
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8

On peut aussi utiliser le ENV one-liner:

RUN locale-gen en_US.UTF-8
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
51
czerasz

Essayer

ENV LANG C.UTF-8

Si vous obtenez l'erreur unsupported locale setting et ne souhaitez pas installer de nouveaux paramètres régionaux.

7
e18r

J'ai essayé cela et cela m'a aidé à Dockerfile après mon image, j'ajoute

ENV LANG='en_GB.UTF-8' LANGUAGE='en_GB:en' LC_ALL='en_GB.UTF-8'
RUN echo en_GB.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen

et courir

docker-compose build
docker-compose up -d
0
Jogi