Разделяете прото файлы в докере?
Мне было интересно, как люди, как правило, обмениваются прототипами между клиентами и серверами в Docker-композитах? Я тестирую gRPC для развлечения и создал проект со следующим макетом:
docker-compose.yml
front/Dockerfile
...
back/Dockerfile
proto/
...
Вот front
клиент gRPC для back
сервер. Сейчас back/proto
содержит файлы protobuf, которые мне нужны для создания заглушки клиента. Проблема в том, что это вне контекста front
, У кого-нибудь, кто использует их, есть какие-нибудь лучшие методы, чтобы поделиться этим?
0 ответов
У меня есть два варианта для вас:
Docker Multistage Build
Вы можете использовать многоэтапную сборку Docker. Сначала создайте контейнер задней док-станции, а затем используйте многоэтапную сборку, чтобы .proto
файлы из back
контейнер к front
контейнер.
front
Контейнер Dockerfile может выглядеть примерно так:
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 .
Это расширит контекст сборки, чтобы включить оба front
а также back
каталоги. Таким образом, вы могли бы просто ссылаться back/proto/
в вашем front
Dockerfile.