Принудительное изменение часового пояса в Docker изображении - PullRequest
0 голосов
/ 17 января 2020

Изнутри в gitlab ci pipe я создаю docker образ, используя Dockerfile. Мне нужно изменить часовой пояс на изображении docker с UT C на CST. Я пробовал несколько вещей (перечисленных ниже), но не могу изменить их. Надеялся, что кто-нибудь может указать мне правильное направление.

Linux Версия:

OS name: "linux", version: "4.15.0-72-generic", arch: "amd64", family: "unix"

Изнутри Dockerfile:

RUN sudo echo "America/Chicago" > /etc/timezone

Не работает. При вызове команды date до и после часовой пояс остался неизменным.

Затем:

ENV TZ=America/Chicago
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

Не работал.

Изнутри файла gitlab-ci :

timedatectl
Failed to create bus connection: No such file or directory

Я прочитал, что мне нужно установить dbus .. поэтому я вставил в Dockerfile

apt-get install dbus
apt-get: command not found

Поэтому я подумал, что, возможно, изображение было на основе Alpine .. поэтому я попытался:

apk add --update dbus
timedatectl
Failed to create bus connection: No such file or directory

Итак, я в растерянности. Довольно новичок в этом, и не уверен, что еще делать.

Что я ожидаю.

Когда мои модульные тесты, выполняющиеся в этом образе, выполняют функции даты, они не тянут UT C, они тянут недавно обновленный часовой пояс, который я установил.

Есть предложения?

1 Ответ

2 голосов
/ 17 января 2020

Я считаю, что вам нужно установить пакет tzdata. Используйте что-то вроде ниже в вашем Dockerfile:

# Install tzdata
RUN apk add --no-cache tzdata

Тогда вы сможете установить часовой пояс с переменной окружения:

TZ: America/Chicago
...