Docker: установка таймзоны и локали

October 29, 2019

На примере Node.js

Если вы собираете свой докер для Node.js, то позаботьтесь о настройке правильной локали и таймзоны. Если их не настроить, то методы toLocaleString() будут работать не так, как вы ожидали, да и серверное время, в связи с этим, будет отличаться.

Когда я озаботился о настройке локали в докер образе, который я собирал на базе официального Node:lts, я столкнулся с тем, что это может быть не тривиальной задачей и придется посетить не один пост на SO, прежде чем найдете ответы, смиксуете их и все заработает как надо.

Вот мой финальный рецепт, который я использую:

FROM node:lts

ENV TZ ‘Europe/Moscow’ ENV LC_ALL ru_RU.UTF-8 ENV LANG ru_RU.UTF-8 ENV LANGUAGE ru_RU.UTF-8

RUN echo $TZ > /etc/timezone RUN apt-get update && DEBIAN_FRONTEND=noninteractive
&& apt-get install -y locales tzdata systemd

RUN sed -i -e ‘s/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/’ /etc/locale.gen
&& dpkg-reconfigure —frontend=noninteractive locales
&& update-locale LANG=ru_RU.UTF-8

RUN echo “LANGUAGE=ru_RU.UTF-8” >> /etc/default/locale && echo “LC_ALL=ru_RU.UTF-8” >> /etc/default/locale

RUN rm /etc/localtime && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

RUN localedef -c -f UTF-8 -i ru_RU ru_RU.UTF-8 RUN apt-get clean



Profile picture

Written by Alexander Mayorov
Full Stack CTO