Eu li http://docs.docker.com/engine/reference/builder/#add, mas encontrei um problema. Quero copiar o diretório local go
para o docker/user/local/
Eu tentei:
ADD go /usr/local/
e:
ADD /go/ /usr/local/
Além disso:
RUN chmod 0755 /usr/local/go/src/make.bash
No entanto, vejo a seguinte mensagem de erro, /usr/local/go/src/make.bash: No such file or directory
mas o go
diretório local contém make.bash
.
ADD
camada para cada diretório de origem)?$HOME
ou~
ou qualquer outra variável shell não vai funcionar. Estou dizendo isso porque gastei uma boa quantia tentando descobrir isso do que gostaria de admitir, apesar de ser óbvio para a maioria.COPY
simplesmente não pode se comportar assimcp
? Em vez disso, é preciso haver uma polícia extra como ela funciona.Na verdade,
ADD go /usr/local/
você adicionará o conteúdo dago
pasta e não a própria pasta, você pode usar a solução Thomasleveil ou, se por algum motivo não funcionar, pode alterarWORKDIR
para/usr/local/
adicionar o diretório a ele como:ou
Mas se você quiser adicionar várias pastas, será irritante adicioná-las dessa maneira, a única solução por enquanto, no meu caso atual, é usar
COPY . .
e excluir todos os diretórios e arquivos indesejados.dockerignore
, digamos que tenho pastas e arquivos :e eu quero adicionar
src assets package.json justforfun go
assim:no Dockerfile:
no arquivo .dockerignore:
Ou para mais diversão (ou você gosta de confundir, mais pessoas as fazem sofrer também: P) pode ser:
Dessa forma, você ignora tudo, mas exclui o que deseja que seja copiado ou adicionado apenas da "lista de ignorados".
É uma resposta tardia, mas adicionamos mais maneiras de fazer o mesmo, cobrindo ainda mais casos.
fonte
Você pode usar COPY. Você precisa especificar o diretório explicitamente. Não será criado por si só
Referência: referência do Docker CP
fonte