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, 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" de docker run
- docker run
é tarde demais.
Eu vejo essas opções e não gosto delas:
Eu posso adicionar uma pasta chamada shared/
e usar um hack para colocá-la "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 que a pasta compartilhada não seja alterada e seja propensa a bugs)
Eu posso dividir o projeto em 3 projetos diferentes e vinculá-los usando o git-sub-something. Esta configuração é muito difícil de trabalhar (ou eu não sei como fazer isso).
Eu assumo que minha situação não é tão incomum, especialmente com o lema "desacoplar aplicativos em vários containers". Então provavelmente existem maneiras muito legais de trabalhar com isso. Alguma pista?
Tags git docker shared-access