2013-07-04 18 views
24

mogę kompilacji Dockerfile jaknie stanie zbudować specyficzny Dockerfile

docker build -t deepak/ruby .

Ale dla Dockerfile który nie nazwie Dockerfile

# DOCKER-VERSION 0.4.8 

FROM deepak/ruby 

MAINTAINER Deepak Kannan "[email protected]" 

RUN ./bin/rails s 

powiedzmy to nazywa Dockerfile.app który budujemy z

docker build -t deepak/app Dockerfile.app

następnie pojawia się błąd

Uploading context 0 bytes 
Error build: EOF 
EOF 
+5

Więc pytanie brzmi: , w jaki sposób mogę zbudować plik dockerfile, jeśli nazwa pliku dockerfile nie jest plikiem Dockerfile? –

+1

@KenCochrane yes. to jest pytanie: – deepak

+0

https://docs.docker.com/reference/commandline/build/ – zx1986

Odpowiedz

11

ostatni parametr do dokowanym build to ścieżka build, kiedy można umieścić . to znaczy jest to ścieżka gdzie znajdziesz Dockerfile. Kiedy zmienisz go na Dockerfile.app, wówczas spróbujesz i poszukać Dockerfile.app/Dockerfile, co nie jest poprawne.

Nie jestem pewien, czy nadal będzie działać, ale kiedyś byłeś w stanie to zrobić.

$ docker build -t deepak/app - < Dockerfile.app 

Spróbuj tego i zobacz czy to pomaga, jeśli nie, może otworzyć problem Döcker aby dodać tę funkcję z powrotem, lub aktualizacji dokumentacji, w jaki sposób korzystać z Dockerfile z inną nazwą.

Więcej informacji tutaj: http://docs.docker.io/en/latest/commandline/command/build/

+1

Próbowałem adresu URL i działa. Ścieżka powinna również działać zgodnie z dokumentami. spowoduje zgłoszenie błędu. – deepak

+5

zgodnie z udostępnionymi dokumentami (podziękowania). 'budowanie dockera - deepak

+2

, ale chcę dać inny plik Docker i nadal mieć kontekst, tj. Dodaj pliki. więc zgłoszę błąd – deepak

2

Spróbuj dockerfeed. Używa funkcji dokowania do budowania kontekstu przez stdin. Napisałem scenariusz, aby dokładnie rozwiązać twój problem, przed którym stanąłem.

Aby wymienić Dockerfile z inną to zrobić tak:

dockerfeed -d Dockerfile.app . | docker build -t deepak/ruby - 

i voila. Dockerfeed działa tak samo jak docker build. Paczka źródłowa z plikiem Dockerfile, ale pozwala zamienić stary plik Dockerfile na żądany. W procesie nie są tworzone żadne pliki, żadne źródło się nie zmienia. Wygenerowane archiwum tar jest przekierowywane do docker, które z kolei wysyła je do demona docker.

Aktualizacja: Była to ważna odpowiedź w dawnych czasach, kiedy nie było -f przełącznik dostępny. W wersji 1.5 dockera ta opcja została wprowadzona. Teraz można budować zapewnić inny Dockerfile tak:

docker build -f other-Dockerfile . 
34

doker budować -f MyDockerfile.

lub z tagiem:

doker budować -t mysuperimage -f MyDockerfile.

2

Można to osiągnąć również za pomocą funkcji dokowania.

W swojej Döcker-compose.yml ramach sekcji budowlanej, można określić katalog, w którym przechowywane są dockerfile i jego nazwa-alternatywny sposób następujący:

build: 
    context: "/path/to/docker/directory" 
    dockerfile: "dockerfile-alternate-name" 

docker-compose