Использование docker-compose для установки часовых поясов контейнеров
У меня есть файл для докеры, в котором несколько файлов Docker для создания контейнеров. Я не хочу редактировать свои файлы Dockerfiles, чтобы устанавливать временные интервалы, потому что они могут меняться в любой момент членами моей команды, и у меня есть файл docker-compose.override.yml, чтобы внести изменения в локальную среду. Тем не менее, один из моих контейнеров (на основе селена), похоже, не выдает часовую зону хоста, и это создает проблемы для меня. Исходя из этого, я хочу использовать часовые пояса во всех контейнерах. В моем Dockerfiles прямо сейчас я делаю
ENV TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
И все работает отлично. Как выполнить повторную копию той же команды в синтаксисе docker-compose?
Ответы
Ответ 1
version "2"
services:
serviceA:
...
environment:
TZ: "America/Denver"
command: >
sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&
echo $TZ > /etc/timezone &&
exec my-main-application"
Изменить: вопрос не запрашивал, но я только что добавил exec my-main-application
, чтобы показать, как будет задан основной процесс. exec
важно здесь, чтобы убедиться, что my-main-application
получает Ctrl-C (SIGINT/SIGKILL).
Ответ 2
Самым простым решением было бы поделиться томом в docker-compose.yml, как это
ipchanger:
image: codertarasvaskiv/ipchanger:raspberry
volumes:
- "/etc/localtime:/etc/localtime:ro"
- ro - означает, что контейнер может читать только из /etc/localtime хост-машины.
Ответ 3
Это простое решение:
environment:
- TZ=America/Denver