Прочитав об огромных размерах изображений, которые возможны при многоэтапных сборках докеров, я пытаюсь уменьшить размер изображений для Dockerfile, который у меня есть для создания двоичного файла Go.Мой Dockerfile находится ниже.
# Configure environment and build settings.
FROM golang:alpine AS buildstage
ARG name=ddmnh
ENV GOPATH=/gopath
# Create the working directory.
WORKDIR ${GOPATH}
# Copy the repository into the image.
ADD . ${GOPATH}
# Move to GOPATH, install dependencies and build the binary.
RUN cd ${GOPATH} && go get ${name}
RUN CGO_ENABLED=0 GOOS=linux go build ${name}
# Multi-stage build, we just use plain alpine for the final image.
FROM alpine:latest
# Copy the binary from the first stage.
COPY --from=buildstage ${GOPATH}/${name} ./${name}
RUN chmod u+x ./${name}
# Expose Port 80.
EXPOSE 80
# Set the run command.
CMD ./ddmnh
Получившееся изображение, однако, похоже, не имеет уменьшенного размера.Я подозреваю, что изображение golang:alpine
как-то включено.Ниже приведен скриншот результатов выполнения docker build .
в Dockerfile выше.
Размер alpine:latest
составляет всего 4,15 МБ.Добавляя размер скомпилированного двоичного файла (который относительно мал), я ожидал бы не более, скажем, возможно, 15 МБ для окончательного изображения.Но это 407 МБ.Я явно что-то не так делаю!
Как мне настроить Dockerfile для получения изображения меньшего размера?