W moim Dockerfile
mam:
ADD ../../myapp.war /opt/tomcat7/webapps/
Ten plik istnieje, ponieważ ls ../../myapp.war
zwraca mi prawidłowy plik, ale po uruchomieniu sudo docker build -t myapp .
mam:
Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/
2014/07/02 19:18:09 ../../myapp.war: no such file or directory
Czy ktoś wie, dlaczego i jak to zrobić poprawnie?
Odpowiedzi:
Możesz zbudować plik Dockerfile z katalogu nadrzędnego:
źródło
-f
nie wydaje się być przestarzały zgodnie z dokumentacją -> Określ plik Dockerfile (-f) : docs.docker.com/engine/reference/commandline/build/ ...Niestety (jak sądzę ze względów praktycznych i bezpieczeństwa), jeśli chcesz dodać / skopiować zawartość lokalną, musi ona znajdować się w tej samej ścieżce głównej, co plik
Dockerfile
.Z dokumentacji :
EDYCJA: Istnieje teraz opcja (
-f
) do ustawienia ścieżki do pliku Dockerfile; można go użyć do osiągnięcia tego, co chcesz, zobacz odpowiedź @Boedy poniżej.źródło
Za pomocą docker-compose można ustawić folder kontekstowy:
źródło
Dodanie fragmentów kodu w celu wsparcia zaakceptowanej odpowiedzi.
Struktura katalogów:
Wpis pliku Dockera:
Polecenie użyte do zbudowania obrazu dockera
źródło
install_x.sh
?Rozwiązaniem dla tych, którzy używają kompozytora, jest użycie woluminu wskazującego na folder nadrzędny:
Ale jestem prawie pewien, że można to zrobić grając z woluminami w Dockerfile .
źródło
Ponieważ
-f
spowodowałem inny problem, opracowałem inne rozwiązanie.-f
Flaga nie rozwiązuje mojego problemu ponieważ moimonbuild
wyglądzie obrazu dla pliku w folderze i musiałem zadzwonić tak:-f foo/bar/Dockerfile foo/bar
zamiast
-f foo/bar/Dockerfile .
Należy również pamiętać, że jest to rozwiązanie tylko w niektórych przypadkach jako
-f
flagaźródło