在 docker 中共享 proto 文件?

Edv*_*olm 5 protocol-buffers project-layout grpc docker-compose

我想知道人们如何倾向于在 docker 组合中的客户端和服务器之间共享 proto 文件?我正在测试 gRPC 的乐趣,并创建了一个具有以下布局的项目:

docker-compose.yml
front/Dockerfile
      ...
back/Dockerfile
     proto/
     ...
Run Code Online (Sandbox Code Playgroud)

frontback服务器的 gRPC 客户端。现在back/proto包含生成客户端存根所需的 protobuf 文件。这里的问题是这超出了front. 使用这些的任何人都有任何最佳实践可以分享来处理这个问题?

JGC*_*JGC 0

我有两个选择给你:

Docker 多阶段构建

您可以使用docker multi-stage build。先生成后台docker容器,然后使用多阶段构建将文件.protoback容器中拉取到容器中front

容器frontDockerfile 可能类似于:

FROM back AS builder

FROM alpine:latest  
COPY --from=builder proto/ proto/
...other commands...
Run Code Online (Sandbox Code Playgroud)

扩展构建上下文

另一种选择是docker build从上面的目录发出命令:

docker build -f back/Dockerfile .
docker build -f front/Dockerfile .
Run Code Online (Sandbox Code Playgroud)

这将扩展构建上下文以包括frontback目录。这样你就可以back/proto/在 Dockerfile 中引用front