카테고리 없음
컨테이너화 이후 기준시 문제
dev-diver
2025. 4. 15. 23:07
문제
도커 배포 이후에 데이터가 변한게 없는데도 불구하고 위와 같이 스케줄이 보였다.
Response 비교
컨테이너화 이후에는 startDate, endDate의 timeZone이 설정이 안 되고 있다.
확인 결과 실제 db에는 timezone정보를 따로 저장하지 않고, 쿼리 시에 DSN에서만 local로 요청하고 있었다.
"DSN": "계정:password@tcp(192.xxx.124.163:4306)/database_name?parseTime=true&loc=Local",
그런데 도커화 전에는 머신의 시간 자체가 한국 시간으로 돼있어서 잘 돌아갔던 것이다.
그런데 도커는 서버가 docker에서 설정한 image 안에서 돌기 때문에, 기준시를 따로 설정해주지 않으면 UTC가 기준이 된다.
이를 고쳐주기 위해 go를 build하는 image에 기준시를 넣어주었다.
# Go 빌드 스테이지
FROM golang:1.23 as go-builder
WORKDIR /app
COPY . .
RUN go mod tidy
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o cis .
# 최종 스테이지
FROM alpine:latest
RUN apk add --no-cache tzdata //여기서 타임존
ENV TZ=Asia/Seoul //설정
WORKDIR /app
COPY --from=go-builder /app/cis .
RUN chmod +x /app/cis
CMD ["/app/cis"]
해결이 잘 됐다.