5

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

docker-compose.yml
front/Dockerfile
      ...
back/Dockerfile
     proto/
     ...

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

4

1 回答 1

0

我有两个选择:

Docker 多阶段构建

您可以使用docker multi-stage build。先生成后面的docker容器,然后使用multi-stage build将.proto文件从back容器中拉取到front容器中。

容器Dockerfilefront可能类似于:

FROM back AS builder

FROM alpine:latest  
COPY --from=builder proto/ proto/
...other commands...

扩展构建上下文

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

docker build -f back/Dockerfile .
docker build -f front/Dockerfile .

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

于 2019-05-18T04:04:19.117 回答