我遇到了無法構(gòu)建包含多個原型文件(服務(wù)器和文本)的 Dockerfile 的問題。服務(wù)器原型在 Dockerfile 目錄中,但文本原型在 Dockerfile 父目錄中。所以我在父目錄中構(gòu)建 Dockerfile 以將文本原型復(fù)制到 Docker 構(gòu)建中。proto/text.proto: File not found.即使我將 復(fù)制proto/text.proto到確切位置,Docker 構(gòu)建仍會抱怨server/proto/server.proto.這是我的所有文件:Docker文件FROM --platform=linux/x86_64 golang:1.19.3-bullseye# Install grpcRUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 && \ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28WORKDIR /appCOPY server/. /appCOPY proto/text.proto /app/proto/text.proto# Install protoc and zip system libraryRUN apt-get update && apt-get install -y zip && \ mkdir /opt/protoc && cd /opt/protoc && wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-x86_64.zip && \ unzip protoc-3.7.0-linux-x86_64.zip# Copy the grpc proto file and generate the go moduleRUN /opt/protoc/bin/protoc --go_out=/app/proto --proto_path=/app/proto --go_opt=paths=source_relative --go-grpc_out=/app/proto --go-grpc_opt=paths=source_relative /app/proto/text.proto /app/proto/server.protoEXPOSE 5051RUN go build -o /serverENTRYPOINT ["/server"]目錄樹1.text ├── admin │ ├── Dockerfile │ ├── app.js │ ├── package.json │ └── web │ ├── html │ │ └── index.html │ └── resources ├── compose.yaml ├── db │ ├── Dockerfile │ ├── main.go │ ├── proto │ │ ├── db.pb.go │ │ ├── db.proto │ │ └── db_grpc.pb.go │ └── text.db ├── go.mod ├── go.sum ├── proto │ ├── text.pb.go │ └── text.proto └── server ├── Dockerfile ├── main.go ├── proto │ ├── server.pb.go │ ├── server.proto │ └── server_grpc.pb.go └── text ├── text.go └── text_test.go我能夠在根text目錄中運行以下協(xié)議:protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/text.proto db/proto/db.proto server/proto/server.proto并在本地運行服務(wù)器,但我無法構(gòu)建我的 Docker:
使用多個 Proto 構(gòu)建 Docker - 未找到 Proto 文件
慕田峪7331174
2023-03-15 14:34:17