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!
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"]
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'
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.
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