Docker의 Alpine Linux에서 시간대를 JST로 설정

2367 단어 alpine도커리눅스
Alpine Linux에서 이미지를 만들 때 시간대를 설정할 때 고민했기 때문에 비망록으로.

타임 존을 JST 로 하기 위해서, 구그로 나온 이하를 Dockerfile 에 기술했다.
FROM alpine

RUN apk --no-cache add tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    apk del tzdata

이 이미지를 환경 변수 TZ=Asia/Tokyo를 지정하면서 기동하면, 타임 존이 GMT가 되어 버렸다
$ docker run --rm -e TZ=Asia/Tokyo alpine-tz date
Fri Apr 20 02:10:04 GMT 2018

조사해 보면, 환경 변수 TZ 가 정의되고 있으면 /etc/localtime 를 참조하지 않는 것 같다.
tzset(3)
date(1)

시도에 TZ 를 지정하지 않고 기동하면 JST 가 되었다.
$ docker run --rm alpine-tz date
Fri Apr 20 11:12:26 JST 2018

잘 조사하지 않고 사용하면 빠지네요 ....

덧붙여서, Java 등 어플리케이션에 따라서는 TZ (을)를 지정하지 않으면 타임 존이 인식되지 않는 경우도 있다.
이 경우는 tzdata 를 삭제하지 말아 두는지, 사이즈를 조금이라도 깎고 싶은 경우는 이하와 같이 파일을 카피한다···는, 지금 이치?
RUN apk --no-cache add tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    apk del tzdata && \
    mkdir -p /usr/share/zoneinfo/Asia && \
    cp /etc/localtime /usr/share/zoneinfo/Asia/Tokyo

좋은 웹페이지 즐겨찾기