[Goang]missingLocation in call to Dateエラー


missing Location in call to Date


次の手順2に従ってドッキングファイルを整理し、開発-導入コンテナを分離します.
FROM golang:latest AS builder

RUN apt-get update -y &&\
    apt-get upgrade -y

ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux

WORKDIR /root/workdir/src

COPY ./src /root/workdir/src

RUN go mod download && go mod tidy

RUN go build -o main ./

WORKDIR /dist

RUN cp /root/workdir/src/main .

FROM scratch

COPY --from=builder /dist/main .

ENTRYPOINT ["/main"]
開発環境では何の問題もありません.
配布後にtimezoneに関連するエラーが発生しました.
missing Location in call to Date
調べてみましたが、builder画像に含まれるタイムゾーン情報はscratch画像にないエラーです.
FROM scratch

COPY --from=builder /dist/main .

# $GOROOT : /usr/local/go 
COPY --from=builder /usr/local/go/lib/time/zoneinfo.zip /

ENV ZONEINFO=/zoneinfo.zip

ENV TZ=Asia/Seoul

ENTRYPOINT ["/main"]
上記のようにGOROOTパスではzeoninfo.zipファイルをscratchに移行した後、環境変数に追加して解決します.
scratch画像は本当に「空」の画像であることを覚えておいてください.

Reference

  • https://medium.com/@mhcbinder/using-local-time-in-a-golang-docker-container-built-from-scratch-2900af02fbaf
  • https://blog.frec.kr/golang/troubleshooting-0/