Mais uma pergunta sobre o link simbólico do Docker. Tenho vários arquivos que desejo copiar para todas as minhas compilações do Docker. Minha estrutura de dir é:
parent_dir
- common_files
- file.txt
- dir1
- Dockerfile
- symlink -> ../common_files
No exemplo acima, quero que o arquivo.txt seja copiado quando encaixar a compilação dentro do dir1. Mas não quero manter várias cópias de file.txt. Por este link, a partir da versão 0.10 do docker, a compilação do docker deve
Siga os links simbólicos dentro da raiz do contêiner para obter instruções de construção ADD.
Mas não recebo esse arquivo ou diretório quando construo com qualquer uma destas linhas no meu Dockerfile:
ADD symlink /path/dirname
ou
ADD symlink/file.txt /path/file.txt
a opção de montagem NÃO vai resolver para mim (plataforma cruzada ...). Tentei tar -czh . | docker build -t
sem sucesso.
Existe uma maneira de fazer o Docker seguir o link simbólico e copiar common_files / file.txt para o contêiner integrado?
Follow symlinks inside container's root for ADD build instructions.
significa que dentro do contêiner os links simbólicos são seguidos. Não está no diretório de contexto de construção. NoADD file.txt /dir/file.txt
diretóriodir
pode haver um link simbólico. Os argumentos que citei na minha resposta ainda são válidos e os links simbólicos ainda não são seguidos na versão mais recente. Você pode ter problemas (em relação à repetibilidade) ao armazenar links simbólicos em sistemas de controle de revisão como o git . Portanto, consulte esta questão .Uma possibilidade é executar a compilação no diretório pai, com:
(Ou, de forma equivalente, no diretório filho)
O Dockerfile terá que ser configurado para copiar / adicionar com os caminhos apropriados. Dependendo de sua configuração, você pode querer que um
.dockerignore
no pai deixe de fora coisas que você não deseja que sejam colocadas no contexto.fonte
Se alguém ainda tiver esse problema, encontrei uma solução muito boa em superuser.com:
/superuser/842642/how-to-make-a-symlinked-folder-appear-as-a-normal-folder
Basicamente, sugere o uso de tar para remover a referência dos links simbólicos e alimentar o resultado na compilação do docker:
fonte
em vez de usar simlinks, é possível resolver o problema administrativamente apenas movendo os arquivos de sites_available para sites_enabled em vez de copiar ou fazer simlinks
então a configuração do seu site estará em uma cópia apenas na pasta site_available se parou ou algo assim ou em sites_enabled se deve ser usado
fonte
Eu sei que isso quebra a portabilidade do docker build, mas você pode usar links físicos em vez de simbólicos:
fonte