[Docker] Docker와 스프링 타임존 동기화

docker compose 사용시 스프링과 서버시간 동기화하기
dustjq1005 2025년 07월 01일 2025년 09월 06일 수정됨

AWS EC2를 사용하면 처음에 시간이 한국시간으로 설정이 되어 있지 않습니다. 그래서 로그 시간을 보면 한국보다 9시간 느린 시간이 찍혀있는 것을 볼 수 있습니다.

서버 시간은 매우 중요합니다. 서버 시간을 제대로 동기화하지 않으면 시간이 뒤죽박죽이라 문제가 생겼을때 디버깅을 제대로 못하게 됩니다.

하지만 저는 귀찮아서 서버 시간을 안바꾸고 있었는데… 이번에 한번 바꿔보도록 하겠습니다.

서버 시간 확인하기

서버시간을 확인하는 명령어는 다음과 같습니다.

date -> Tue Jul  1 20:24:18 KST 2025
timedatectl // timedatectl은 아래 이미지와 같이 나오게 됩니다.

이미지를 확인해보면 처음엔 Local time이 아래 Universal time과 같습니다.

간단한 방법으로 변경할 수 있는데요. AWS 문서에는 다음과 같이 변경할 수 있다고 합니다.

타임존 변경하기 (AWS 문서)

  1. 사용 가능한 표준 시간대 확인
timedatectl list-timezones
  1. 선택한 표준 시간대 설정
sudo timedatectl set-timezone America/Vancouver
  1. 다시 변경된 표준 시간대 설정 확인
timedatectl

관련 문서 링크를 통해 확인하실 수 있습니다. AWS-인스턴스 시간대 변경

타임존 변경하기 (다른 방법)

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

기존 심볼릭 링크를 삭제하고 한국기준 시간으로 심볼릭 링크를 바꾸는 방법입니다. 이렇게 하면 서버시간은 변경됩니다.

docker-compose 설정 수정

이제 Docker 설정을 수정해 Spring의 타임시간을 동기화 해주면 됩니다.

docker-compose.yml

services:
  ....
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /usr/share/zoneinfo/Asia/Seoul:/etc/timezone:ro
  ....

docker 컨테이너의 시간 설정하는 링크를 외부 설정 파일을 사용하도록 수정해줍니다. 그렇게 되면 로그 시간이 한국 시간으로 맞춰지는 것을 확인할 수 있습니다.

Comments