docker-compose 의 timezone 해결 with TypeORM

·2022년 8월 6일
0

todo

목록 보기
3/5

시간아 멈춰라....?

지금 작업하고 있는 것이 투두리스트다보니, 시간이 상당히 중요한 상태가 됐다.

그런데 도커로 구성하면 기본 서버의 시간이 UTC로 되어있기 때문에 시간이 매칭되지 않는 문제가 생겼다.
이것을 어떻게 처리하지 않으면 계속 문제가 생길 것 같아서, 일단 TypeORM 상에서 수정을 해보려고 했다.

위의 사진을 보면 timezone이라고 적혀있는 옵션을 볼 수 있다.

대충 +09:00쓰면 UTC에서 KST로 바뀔 것 같아서 적어넣었지만?

적용이 안돼

.....?

옵션은 있는데 저게 정상적으로 적용이 되는 것 같지 않았다(...)

그래서 결국은 도커 컨테이너 그 자체에서 설정을 해야하는 것 같아서 찾아봤는데
대부분이 실행 후에 시간을 변경하는 것들이라 찾아봤더니 아래처럼 하면 적용을 할 수 있었다.

결국 설정값을 바꾼 yaml 파일

version: '3.7'

services:
  my-server:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 3000:3000
    volumes:
      - ./src:/my/src
    environment:
      - TZ=Asia/Seoul

  my-dbserver:
    platform: linux/x86_64
    image: mysql:latest
    environment:
      MYSQL_DATABASE: 'mydb'
      MYSQL_ROOT_PASSWORD: 'root'
      TZ: Asia/Seoul
    ports:
      - 3306:3306

여기서 특이한 것은 env에 TZ(타임존) 설정을 해줘야하는 것은 맞지만, 입력하는 방식이 두개가 달랐다.

그래서 저거때문에 조금 헤멨지만, 저렇게 Asia/Seoul을 넣는 것으로 KST 시간을 적용할 수 있게 됐다.

도커 컨테이너 내부 서버, DB시간이 KST로 적용된 것을 볼 수 있다.

그 외의 타임존 문제로 골치아팠던 것이 또 있었는데, 그것은 별개의 포스트에서 작성해볼 예정이다.

profile
물류 서비스 Backend Software Developer

8개의 댓글

comment-user-thumbnail
2022년 8월 7일

UTC로받고 프론트에서 luxon, dayjs같은 날짜라이브러리 사용하는게 낫지않나요? 굳이 꼭 KST로 저장할필요는 없다고 생각..

2개의 답글
comment-user-thumbnail
2022년 8월 8일

뭐야 댓글로직 이상해

답글 달기