2016-08-26 4 views
7

Docker 파일을 몇 개 실행하여 컨테이너를 만드는 도커 작성 파일이 있습니다. Dockerfiles를 편집하여 시간대를 설정하고 싶지는 않습니다. 팀 구성원이 언제든지 변경할 수 있고 로컬 환경을 변경하기 위해 docker-compose.override.yml 파일을 가지고 있기 때문입니다. 그러나, 내 컨테이너 중 하나 (셀렌 기반의 것) 호스트 시간대를 끌어 오지 않는 것 같아 그게 나를 위해 문제가 발생합니다. 이를 바탕으로 모든 컨테이너에 타임 존을 적용하고 싶습니다. 지금 내 Dockerfiles에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" 

편집 : 문제는 그것을 요구하지 않았지만, 난 그냥 메인 프로세스가 지정됩니다 방법을 보여 exec my-main-application을 추가했습니다. my-main-application이 Ctrl-C (SIGINT/SIGKILL)를 수신하는 데 여기에 exec이 중요합니다.

+0

docker-compose의 "명령"은 기본 명령을 무시합니다. 참조 : https://docs.docker.com/compose/compose-file/#/command –

+1

@ Claudiod'Angelis 맞습니다. 여기는 원하는 행동이기도합니다. 내 코드를 빠르게 검토하여 컨테이너의 주 프로세스가 시작되는 방법을 지정해야한다는 것을 알게되었습니다. 지금 추가. – Alkaline