reproducible docker containers

Многие сегодня используют docker для доставки своих решений в продакшен. Обычно образы собираются с помощью т.н. Dockerfile, который может иметь следующий вид:

FROM golang:latest as builder
WORKDIR /go/src
COPY . .
RUN go build -o app
FROM alpine:latest
COPY --from=builder /go/src/app /bin/app
CMD /bin/app

Можно ли сказать что образ, полученный в результате сборки с указанным Dockerfile, будет воспроизводимым?

Нет. Эта заметка объясняет:

  • почему
  • как писать Dockerfile чтобы приблизиться к воспроизводимости
  • чем заменить Dockerfile чтобы сделать сборки воспроизводимыми

emacs + go-mode + lsp + REPL

Некоторое время назад я начал переезжать с spacemacs обратно на самописную конфигурацию(мне так стабильнее и кастомайзить проще). Common LISP и scheme работают почти без настройки, а вот с golang пришлось поплясать.

Цель: настроить среду разработки, которая способна:

  • к автокомплиту
  • выводу документации
  • go to definition

Это минимум, необходимый мне для работы.

Скажу сразу:

  • не всё заработало
  • некоторые вещи тормозят
  • некоторые работают странно

Но жить можно, плюс ко всему - понятно что улучшать.