2016-08-26 3 views
7

У меня есть файл для докеры, в котором несколько Dockerfiles создаются для создания моих контейнеров. Я не хочу редактировать свои файлы Dockerfiles, чтобы устанавливать временные интервалы, потому что они могут меняться в любой момент членами моей команды, и у меня есть файл docker-compose.override.yml, чтобы внести изменения в локальную среду. Тем не менее, один из моих контейнеров (на основе селена), похоже, не выдает часовую зону хоста, и это создает проблемы для меня. Исходя из этого, я хочу использовать часовые пояса во всех контейнерах. В моих докерных играх сейчас я делаюИспользование docker-compose для установки часовых поясов контейнеров

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

И все работает нормально. Как воспроизвести ту же команду в синтаксисе docker-compose?

+3

https://github.com/dnvriend/docker-timezone-test/blob/master/docker-compose.yml –

ответ

7
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" 

Edit: Вопрос не просить об этом, но я просто добавил exec my-main-application, чтобы показать, как будет указан основной процесс. exec Важный для того, чтобы my-main-application получил (а) Ctrl-C (SIGINT/SIGKILL).

+0

Имейте в виду, что команда «docker-compose» переопределяет команду по умолчанию, если она есть. Ссылка: https://docs.docker.com/compose/compose-file/#/command –

+1

@ Claudiod'Angelis Это правильно, и это тоже желаемое поведение здесь. При быстром просмотре кода я понял, что мне нужно указать, как запускается основной процесс для контейнера. Добавьте его сейчас. – Alkaline

Смежные вопросы