Comments 10
что-то с переводом автор опоздал на 1.5 года… переводов этой статьи уже куча, в том числе даже у меня в блоге уже как со 2-ого марта 2018 года (в гугле ищется по запросу «Создаём самый маленький и безопасный Docker контейнер для Golang на базе Scratch
»). Тема изъезженная.
»). Тема изъезженная.
0
Великолепно.
Весь смысл ca-certificates.crt в том чтобы он был актуальный и регулярно обновлялся. А вы его в образ навечно. Не надо так.
ADD ca-certificates.crt /etc/ssl/certs/
Весь смысл ca-certificates.crt в том чтобы он был актуальный и регулярно обновлялся. А вы его в образ навечно. Не надо так.
-1
так образ надо обновлять.
0
Не ну а что?)
Подкидывать файл через volume для слабаков, а если добавить cert-bot (например как daemon через s6), то задача создания минимального образа явно будет провалена.
Подкидывать файл через volume для слабаков, а если добавить cert-bot (например как daemon через s6), то задача создания минимального образа явно будет провалена.
+1
Я тоже так делаю. Раз в год обновить сертификат и выкатить новый образ не проблема.
Все равно регулярные обновления происходят.
Все равно регулярные обновления происходят.
0
Странное решение с копированием корневых сертификатов в репозиторий, зачем это оно все ведь во время сборки можно скопировать из любого другого образа к примеру я делаю вот так вот:
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"]
0
Я бы добавил, что собирать то тоже можно в докере, используя multi-step build. Будет полезно для CI/CD
+3
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
-a -installsuffix устарело уже как 4 года:
github.com/golang/go/issues/9344#issuecomment-69944514
Вполне достаточно
CGO_ENABLED=0 go build
Или лучше глобально определить CGO_ENABLED=0
0
Расскажите, ещё, пожалуйста про timezone в контейнерах. Go ищет zoneinfo если использовать time.LoadLocation. Как лучше его в контейнер засунуть?
0
На github в поиске по запросу golang scratch docker в топе сразу два примера, где данные о timezone добавляются в контейнер.
А все статьи по этой теме, к сожалению, поверхностные: я не видел упоминаний timezone, не всегда предлагается менять пользователя с root на ограниченного, в этой статье (не в вину переводчику, конечно) ещё и про multi-stage builds не сказано ничего.
0
Sign up to leave a comment.
Создание минимального Docker-контейнера для Go-приложений