我有一些服务器和客户端正在使用gRPC / golang进行通信。现在我想对应用程序进行容器化,但是包含goland执行和grpc支持的docker映像的大小更大(超过1GB)。我想减小docker映像的大小。
所需的golang版本为1.9及更高版本。这是给出的Dockerfile脚本。如果还有其他方法,请提出建议。
protected override void OnModelCreating (System.Data.Entity.DbModelBuilder modelBuilder)
{
var myClassEntity = modelBuilder.Entity<MyClass>();
// MyClass has a property MyText with a maximum length of 10
myClassEntity.Property(entity => entity.MyText
.HasMaxLength(10);
... configure other MyClass properties.
}
答案 0 :(得分:1)
尝试制作这样的多阶段docker映像
# 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"]
答案 1 :(得分:0)
您可以尝试使用distroless基础图像和多阶段构建。这可能会对您有所帮助。