Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
ADD ca-certificates.crt /etc/ssl/certs/
FROM alpine:3.9 as builder
RUN apk update && apk add ca-certificates tzdata
FROM scratch
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo/
COPY main /
CMD ["/main"]
Я бы добавил, что собирать то тоже можно в докере, используя multi-step build. Будет полезно для CI/CD
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
Расскажите, ещё, пожалуйста про timezone в контейнерах. Go ищет zoneinfo если использовать time.LoadLocation. Как лучше его в контейнер засунуть?
На github в поиске по запросу golang scratch docker в топе сразу два примера, где данные о timezone добавляются в контейнер.
А все статьи по этой теме, к сожалению, поверхностные: я не видел упоминаний timezone, не всегда предлагается менять пользователя с root на ограниченного, в этой статье (не в вину переводчику, конечно) ещё и про multi-stage builds не сказано ничего.
Создание минимального Docker-контейнера для Go-приложений