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

5

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:

  1. 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)

  2. 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?

    
por valya 29.01.2015 / 13:42

0 respostas