Eu sou capaz de construir um Dockerfile como
docker build -t deepak/ruby .
Mas para um Dockerfile que não é nomeado Dockerfile
# DOCKER-VERSION 0.4.8
FROM deepak/ruby
MAINTAINER Deepak Kannan "[email protected]"
RUN ./bin/rails s
vamos dizer que é chamado o Dockerfile.app
qual construímos com
docker build -t deepak/app Dockerfile.app
então eu recebo o erro
Uploading context 0 bytes
Error build: EOF
EOF
docker build --help
há uma linha onde pode encontrar o que está procurando: -f, --file string Nome do Dockerfile (o padrão é 'PATH / Dockerfile')Respostas:
Observe que há um ponto
.
no final de ambos os comandos.Ou com uma tag:
fonte
docker build -f Dockerfile.consumer
me dá um erro "docker build" requer exatamente 1 argumento. Veja 'docker build --help'. Uso: docker build [OPÇÕES] CAMINHO | URL | -.
) no final do comando acima?.
não é uma coisa necessária. O comando build leva dois args viz. caminho para oDockerfile
& caminho para ocontext
diretório. Então, podemos fazerdocker build -t mysupertag -f ./foo/Dockerfile ./foo
Isso funciona
Documentação de compilação do Docker
fonte
O último parâmetro para docker build é o caminho de construção, quando você coloca
.
isso significa que este é o caminho onde você encontrará oDockerfile
. Quando você mudar para,Dockerfile.app
ele tentará e procurará oDockerfile.app/Dockerfile
que não está correto.Não tenho certeza se ainda funcionará, mas você costumava fazer isso.
Tente isso e veja se ajuda, se não, talvez abra um problema do docker para adicionar esse recurso de volta ou atualize a documentação sobre como usar um Dockerfile com um nome diferente.
Mais informações aqui: http://docs.docker.io/en/latest/commandline/command/build/
fonte
docker build - < Dockerfile
não me permite ADICIONAR um arquivo local. Mas tentei e funcionaExperimente o dockerfeed . Ele usa o recurso docker para construir um contexto via stdin. Eu escrevi o script para resolver exatamente o seu problema que eu mesmo estava enfrentando.
Para substituir um Dockerfile por um diferente, faça assim:
E voilà. Dockerfeed está fazendo o mesmo que
docker build
. Ele empacota o código-fonte com seu Dockerfile, mas permite que você troque o Dockerfile antigo pelo desejado. Nenhum arquivo é criado no processo, nenhuma fonte é alterada. O arquivo tar gerado é canalizado para o docker, que por sua vez o envia para o daemon do docker.Atualização: Esta era uma resposta válida nos velhos tempos, quando não havia
-f
opção disponível. Com o docker versão 1.5, essa opção foi introduzida. Agora você pode fornecer um Dockerfile diferente como este:fonte
Você também pode conseguir isso usando docker-compose.
Em docker-compose.yml na seção de compilação, você pode especificar o diretório no qual armazena seu dockerfile e seu nome alternativo da seguinte maneira:
docker-compose
fonte
Suponha que você tenha instalado com sucesso o docker toolbox incluindo docker-compose e docker-machine . Este é meu docker-compose.yml
E isso está no Dockerfile
Certifique-se de que esses arquivos estejam localizados precisamente na pasta raiz. Ao executar o docker-compose up, você criará uma imagem para a web.
fonte
Meu caso está no
/tmp
diretório e há muitos arquivos e o docker tente com outros arquivos embora eu passe o-f <Dockerfile.foo>
A solução mais limpa e fácil (para mim) é (em vez
dockerfeed
das respostas acima):fonte
O usuário do Windows deve tentar o comando abaixo:
por exemplo :
fonte