기본적으로 Docker 컨테이너는 호스트 시스템의 시간대와 무관하게 UTC 표준 시간대로 설정되어 있습니다. 이 점은 특히 한국과 같이 UTC+9 시간대를 사용하는 환경에서 중요한 고려 사항이 될 수 있습니다.
호스트(EC2)의 시간대를 설정하는 방법은 지난 글에서 다룬적 있습니다.
하지만, Docker 컨테이너는 여전히 UTC 표준시간대를 사용합니다.
이를 해결할 수 있는 방법을 스프링 서버의 시간대가 호스트 시간대에 의존하지 않도록 설정하는 방법에 대해서도 다룬적 있습니다.
하지만 서비스 지역을 고려했을 때, 오픈소스에는 적절한 방법이 아닐 수 있습니다.
이번에는 애플리케이션의 시간대 설정은 기본값을 유지하면서도 시간대를 변경하는 방법에 대해 소개하겠습니다.
Docker 컨테이너의 시간대 설정
컨테이너가 한국 시간을 기준으로 정확하게 동작하게 하려면, Docker 컨테이너 생성 시 환경 변수와 심볼릭 링크를 통해 시간대를 지정할 수 있습니다.
TZ 환경 변수를 사용해 컨테이너의 시간대를 Asia/Seoul로 설정할 수 있습니다.
docker run --name <컨테이너_이름> \
-e TZ=Asia/Seoul \
-d <이미지_이름>
생성된 컨테이너의 시간대 확인을 다음의 명령어를 통해 쉽게 확인할 수 있습니다.
docker exec -it <컨테이너 이름> date
로컬의 우측 하단 시간대와 EC2의 시간대가 동일한 것을 확인할 수 있습니다.
결론
이러한 설정을 통해 컨테이너가 한국 시간대를 기반으로 애플리케이션을 실행할 수 있도록 하면, 스케줄링 작업이 정확한 시간에 수행되도록 보장할 수 있습니다.
Docker 컨테이너의 기본 시간대를 적절히 설정하면, 호스트의 시간대와 일치하지 않아 발생하는 문제를 예방하고 애플리케이션이 예상대로 작동할 수 있도록 할 수 있습니다. 시간대 설정이 필요한 애플리케이션을 도커로 실행할 때, 이러한 설정을 항상 고려하는 것이 좋습니다.