golang
Golang: timezone 설정하기
주먹불끈
2023. 6. 11. 23:59
개요
Golang Docker container 내에서 timezone을 한국으로 하고 싶다.
이를 위해서는
- 원하는 timezone을 로드한 다음, 설정을 하면 되는데
- 경량 이미지라면 timezone data를 이미지에 추가해줘야 한다.
구현
Local time 설정하기
실행 코드: https://goplay.tools/snippet/jsxRaDEqQeY
- time.LoadLocation 으로 timezone을 로드해서
- time.Local 에 설정하면 KST 로 나오는 것을 알 수 있다.
package main
import (
"fmt"
"time"
)
func main() {
// Load the Seoul timezone
currentTime := time.Now()
fmt.Println("Current time", currentTime)
location, err := time.LoadLocation("Asia/Seoul")
if err != nil {
panic(err)
}
// Set the timezone for the current process
time.Local = location
// Get the current time in the set timezone
currentTime = time.Now()
fmt.Println("Current time", currentTime)
}
// Current time 2009-11-10 23:00:00 +0000 UTC m=+0.000000001
// Current time 2009-11-11 08:00:00 +0900 KST m=+0.000000001
timezone data
time.LoadLocation 은 OS의 tzdata에서 정보를 가져오는데 경량 이미지를 사용하면 이 정보마저 없기에 에러가 발생한다.
Dockerfile 에서 이미지를 만들 때에 tzdata를 설치하면 이 문제가 해결된다.
# Stage 1: Build the Go application
FROM golang:1.20.2-alpine AS build
WORKDIR /app
COPY . .
RUN go build -o myapp
# Stage 2 - Create a minimal image to run the application
FROM alpine:latest
**## Install tzdata
RUN apk --no-cache add tzdata**
COPY --from=build /app/myapp /myapp
CMD ["/myapp"]
반응형