도커 timezone 설정

김상연·2021년 10월 27일

배포와 서버

목록 보기
1/8

이상했다. 개발용으로 쓰는 로컬 환경의 타임존과 배포용으로 사용하는 서버 환경의 타임존을 확실히 일치 시켰는데도 서비스를 실제로 배포하면 기대와 달리 작동했다. 아침 9시에 비로소 '다음날'로 넘어가는 걸 보니, 분명 utc타임존을 사용하고 있는것이 분명헀다.

문제는 도커였다. 일개 프로그램인 도커(아닌가..??)는 당연히 시스템 타임존을 받아서 쓸거라고 생각했다.

일전에도 이 타임존 때문에 스트레스 받은적이 있었다. os시스템 타임존, 하드웨어 타임존, 또는 각 프로그래밍 언어들의 runtime이 사용하는 타임존, 심지어 데이터베이스마저 각자가 활용하는 타임존이 독립적으로 존재한다는 것을 몸소 체험했었다. 그래도 그덕에 '도커도 따로 이용하는 타임존이 있을수 있겠다'고 생각할 수 있었던 것 같다.

도커는 node.js와 마찬가지로 기본적으로 utc를 사용한다고 나온다. 그걸 본 순간 이미 문제가 해결 된거나 다름없다. 검색결과 아래와 같은 해결방법이 있다.

먼저 Ubuntu에 /etc/localtime로 링크 시킨다.
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
그런 다음 아래와 같이 docker run 명령어 사이에 아래와 같은 옵션을 넣어 주면 된다.
docker run ...
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Seoul \
...
끝~
출처: https://gogorchg.tistory.com/entry/Docker-Container-에-Timezone-설정-하기 [항상 초심으로]

그대로 해 주니 된다. 그러나 이 명령들이 정확히 무엇을 의미하는지는 아직 모른다. 다만 컨테이너를 실행할 때 어떤 타임존을 사용할지 링크 해 둔 파일을 참고하도록 만드는 옵션같다. 분명하게 공부하고 싶지만 지금은 시간을 다투는 일이 너무 많아서 일단 나중으로 미뤄야겠다.

profile
리눅스와 컴퓨터 프로그래밍

0개의 댓글