Questão Fluxo de trabalho do Docker com vários pacotes e fontes compartilhadas


Digamos que eu queira usar o Docker para um aplicativo, que consiste em duas partes. Essas partes são diferentes, mas possuem algumas bibliotecas compartilhadas.

Então, eu tenho duas pastas:

part1/
    Dockerfile
    src/
part2/
    Dockerfile
    src/

No entanto, eu quero que eles compartilhem alguns arquivos (por exemplo, bibliotecas), porque DRY. Infelizmente, não parece haver nenhuma estrutura de diretórios boa que me permita fazer isso: Dockerfiles não pode se referir às pastas pai, e não posso colocá-las na pasta superior porque não tenho permissão para alterar o nome do Dockerfile.

Alguns desses arquivos são necessários na etapa de criação, por isso não posso usar a opção "vincular montar um volume" docker run - docker run é tarde demais.

Eu vejo essas opções e não gosto delas:

  1. Posso adicionar uma pasta chamada shared/, e use um hack para colocá-lo "em" ambas as minhas pastas de aplicativos. Esses hacks incluem montá-lo de alguma forma (o que é irritante, exigiria que eu o fizesse sempre e inexplicável para meus colegas de trabalho a quem estou tentando vender o Docker) ou copiá-lo antes de construir (factível se eu ocultar o edifício em uma construção -script, copie a pasta antes da compilação e remova-a logo após; no entanto, ela invalida o cache de compilação mesmo se a pasta compartilhada não for alterada e sujeita a bugs)

  2. Eu posso dividir o projeto em 3 projetos diferentes e vinculá-los usando o git-sub-something. Essa configuração é muito difícil de trabalhar (ou não sei como fazer isso).

Suponho que minha situação não é tão incomum, especialmente com o lema "desacoplar aplicativos em vários contêineres". Então provavelmente existem maneiras muito legais de trabalhar com isso. Alguma pista?


5


origem




Respostas: