Eu tenho dois aplicativos Dart que eu preciso dockerize. Esses dois aplicativos usam um diretório de origem compartilhado.
Como o Docker impede a adição de arquivos de pastas fora do diretório de contexto ( project/app1
), não consigo adicionar arquivos de ../shared
nem de shared
(o link simbólico interno projects/app1
).
Estou procurando uma maneira de enganar o Docker a fazê-lo de qualquer maneira.
Minha estrutura de projeto simplificada
- projects
- app1
- Dockerfile
- shared (symlink ../shared)
- otherSource
- app2
- Dockerfile
- shared (symlink ../shared)
- otherSource
- shared
- source
Eu poderia subir Dockerfile
um nível e executar a docker build
partir daí, mas preciso de dois Dockerfiles (para app1 e app2) no mesmo diretório.
Minha idéia atual era: se eu pudesse, de alguma maneira, esconder o fato de projects/app1/shared
ser um link simbólico, esse problema seria resolvido. Eu verifiquei se posso compartilhar projects
usando o Samba e remontá-lo em outro lugar e configurar o Samba para tratar links simbólicos como pastas normais, mas não descobri se isso é suportado (eu não tenho muita experiência com o Samba e ainda não tentei, apenas procurei um pouco) .
Existe alguma outra ferramenta ou truque que permita isso?
Prefiro não alterar a estrutura de diretórios, pois isso causaria outros problemas e também não copiaria os arquivos.
Esse problema surgiu várias vezes na comunidade do Docker. Basicamente, viola o requisito de que
Dockerfile
seja repetível se você o executar ou eu o executar. Portanto, eu não esperaria essa capacidade, conforme descrito neste tíquete: O comando Dockerfile ADD não segue links simbólicos no host # 1676 .Então você tem que conceber uma abordagem diferente. Se você observar este problema: ADICIONE para oferecer suporte a links simbólicos no argumento # 6094 , um amigo nosso da U&L ( @Patrick aka. Phemmer) fornece uma solução inteligente.
Isso indica
trecho da página do man tartar
para desreferenciar os links simbólicos do diretório atual e direcioná-los todos para odocker build -
comandofonte
cp
comando, você pode explicar por que é melhor? Eu também acho que o tubo é confuso / excessivamente complicado. Por que não colocar o comando tar acima do comando build? Acho que porque você substituiria o diretório com o link real com o diretório real./bin/cp ../requirements.txt . && docker build ...
a um Makefile para a construção do Docker, era mais fácil