Как уменьшить размер образа докера с поддержкой gRPC в golang? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть сервер и клиенты, которые общаются с помощью gRPC / golang.Теперь я хочу контейнировать свое приложение, но размер образа докера, содержащего выполнение goland и поддержку grpc, больше (более 1 ГБ).Я хотел бы уменьшить размер изображения докера.

Требуемая версия golang - 1.9 и выше.Здесь приведен скрипт Dockerfile.Если есть другой способ, пожалуйста, предложите это.

FROM golang:1.11

RUN apt-get update && \
    apt-get -y install git unzip build-essential autoconf libtool

RUN git clone https://github.com/google/protobuf.git && \
    cd protobuf && \
    ./autogen.sh && \
    ./configure && \
    make && \
    make install && \
    ldconfig && \
    make clean && \
    cd .. && \
    rm -r protobuf

RUN go get google.golang.org/grpc

RUN go get github.com/golang/protobuf/protoc-gen-go

RUN ls -la

WORKDIR /helloworld

COPY . /helloworld

RUN protoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld

CMD ["go", "run", "helloworld/greeter_server/main.go"]

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

попытайтесь создать многостадийный образ докера, подобный этому

# Compile stage
FROM golang:1.11 as build-env

RUN apt-get update && \
    apt-get -y install git unzip build-essential autoconf libtool

RUN git clone https://github.com/google/protobuf.git && \
    cd protobuf && \
    ./autogen.sh && \
    ./configure && \
    make && \
    make install && \
    ldconfig && \
    make clean && \
    cd .. && \
    rm -r protobuf

RUN go get google.golang.org/grpc

RUN go get github.com/golang/protobuf/protoc-gen-go

RUN ls -la

WORKDIR /helloworld

COPY . /helloworld

RUN protoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld
RUN go build -o server helloworld/greeter_server/main.go

# Making image
FROM alpine:3.8 AS host
RUN apk add --no-cache \
        ca-certificates
COPY --from=build-env /helloworld/server /
# copy any other files you need

WORKDIR /
EXPOSE 8000
CMD ["server"]
0 голосов
/ 18 февраля 2019

Вы можете попробовать использовать базовые образы distroless * и многоэтапные сборки.Это может помочь вам.

...