Jestem w stanie zbudować plik Dockerfile jak
docker build -t deepak/ruby .
Ale dla pliku Dockerfile, który nie jest nazwany Dockerfile
# DOCKER-VERSION 0.4.8
FROM deepak/ruby
MAINTAINER Deepak Kannan "[email protected]"
RUN ./bin/rails s
powiedzmy, że nazywa się to, z Dockerfile.app
którym budujemy
docker build -t deepak/app Dockerfile.app
wtedy pojawia się błąd
Uploading context 0 bytes
Error build: EOF
EOF
docker build --help
, jest linia, w której możesz znaleźć to, czego szukasz: -f, --file string Nazwa pliku Dockerfile (Domyślnie to 'PATH / Dockerfile')Odpowiedzi:
Zauważ, że
.
na końcu obu poleceń znajduje się kropka .Lub z tagiem:
źródło
docker build -f Dockerfile.consumer
wyświetla mi błąd „Docker build” wymaga dokładnie 1 argumentu. Zobacz „Docker build --help”. Użycie: docker build [OPTIONS] PATH | URL | -.
) na końcu powyższego polecenia?.
jest to wymagane. Polecenie budowania przyjmuje dwa argumenty, a mianowicie. ścieżka doDockerfile
& ścieżka docontext
katalogu. Więc możemy zrobićdocker build -t mysupertag -f ./foo/Dockerfile ./foo
To działa
Dokumentacja kompilacji platformy Docker
źródło
Ostatnim parametrem budowania dockera jest ścieżka budowania, kiedy to umieścisz
.
, oznacza to, że jest to ścieżka, w której znajdziesz plikDockerfile
. Kiedy go zmienisz,Dockerfile.app
będzie próbował szukaćDockerfile.app/Dockerfile
, co nie jest poprawne.Nie jestem pewien, czy to nadal będzie działać, ale kiedyś byłeś w stanie to zrobić.
Spróbuj tego i zobacz, czy to pomaga, a jeśli nie, może otwórz problem z Dockerem, aby ponownie dodać tę funkcję, lub zaktualizuj dokumentację dotyczącą używania pliku Dockerfile o innej nazwie.
Więcej informacji tutaj: http://docs.docker.io/en/latest/commandline/command/build/
źródło
docker build - < Dockerfile
nie pozwoli mi DODAĆ lokalnego pliku. Ale wypróbowałem to i działaWypróbuj dockerfeed . Używa funkcji dockera do budowania kontekstu poprzez stdin. Napisałem skrypt, aby dokładnie rozwiązać twój problem, z którym sam miałem do czynienia.
Aby zamienić plik Dockerfile na inny, wykonaj to w następujący sposób:
I voilà. Dockerfeed robi to samo, co
docker build
. Pakuje źródło z jego plikiem Dockerfile, ale pozwala zamienić stary plik Dockerfile na żądany. Żadne pliki nie są tworzone w procesie, żadne źródło nie jest zmieniane. Wygenerowane archiwum tar jest przesyłane potokiem do dockera, który z kolei wysyła je do demona dockera.Aktualizacja: To była prawidłowa odpowiedź w dawnych czasach, kiedy nie było
-f
dostępnego przełącznika. W Docker w wersji 1.5 ta opcja została wprowadzona. Teraz możesz zbudować i dostarczyć inny plik Dockerfile w następujący sposób:źródło
Możesz to osiągnąć również za pomocą docker-compose.
W pliku docker-compose.yml w sekcji kompilacji możesz określić katalog, w którym przechowujesz plik dockerfile i jego alternatywną nazwę w następujący sposób:
docker-compose
źródło
Załóżmy, że pomyślnie zainstalowałeś docker toolbox, w tym docker-compose i docker-machine . To jest mój plik docker-compose.yml
A to jest w Dockerfile
Upewnij się, że te pliki znajdują się dokładnie w folderze głównym. Po uruchomieniu docker-compose up zbudujesz obraz dla sieci.
źródło
Mój przypadek jest w
/tmp
katalogu i jest tam dużo plików, a docker próbuje z innymi plikami, chociaż zdałem-f <Dockerfile.foo>
Najczystszym i najłatwiejszym (dla mnie) rozwiązaniem jest (przeczytaj
dockerfeed
powyższe odpowiedzi):źródło
Użytkownik systemu Windows powinien wypróbować poniższe polecenie:
na przykład :
źródło