Skip to content

Instantly share code, notes, and snippets.

@kirill-shtrykov
Created October 3, 2018 12:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kirill-shtrykov/070b5e8b4c9e893d9527f7eace1aa3ce to your computer and use it in GitHub Desktop.
Save kirill-shtrykov/070b5e8b4c9e893d9527f7eace1aa3ce to your computer and use it in GitHub Desktop.
Golang example Dockerfile
# Собираем в одном контейнере
FROM golang as builder
# Копируем исходники
ADD . /go/src/application/
# Топаем туда и ставим либы и прочее
RUN cd /go/src/application/ && go get .
# Собираем и ставим
RUN go install application
# Создаем окончательный контейнер с приложением
FROM alpine
# Ставим все что нам нужно, например серты для работы HTTPS
RUN apk update && apk add ca-certificates
# Линкуем либы, в альпине был какой-то косяк с LIBC
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
# Вот тут мы и копируем наш готовый бинарник из контейнера для сборки
COPY --from=builder /go/bin/application /bin
# Указываем энтрипоинт (можно враппер написать)
ENTRYPOINT /bin/application
# И выбрасываем наружу порты
EXPOSE 8080
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment