Docker ADD failed no such file or directory

0

Dockerfile:

FROM centos

RUN yum install -y java

VOLUME /tmp
ADD /task-0.0.1SNAPSHOT.jar myapp.jar
RUN sh -c 'touch /myapp.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myapp.jar"]

Odpalam komendę docker build -t task . i dostaję:

title

Ktoś miał wcześniej taki problem ?

0

nooo.. przecież wyraźnie Ci mówi że nie ma takiego pliku do skopiowania XD

Czy w miejscu w którym robisz builda masz ten plik ? zresztą, ten trailing slash to tak nie za bardzo chyba zadziała.

0

Tak, wiem o czym mówi komunikat, ale nie wiem jak to naprawić. Plik *.jar i Dockerfile mam w tym samym folderze w którym robię builda. Próbowałem je wrzucić do tej lokalizacji która jest w treści errora, ale ona nawet nie istnieje.

zresztą, ten trailing slash to tak nie za bardzo chyba zadziała.

To jak to powinienem zrobić ?

0

ADD /task-0.0.1SNAPSHOT.jar myapp.jar
?
ADD ./task-0.0.1SNAPSHOT.jar myapp.jar
?
ADD task-0.0.1SNAPSHOT.jar myapp.jar

przecież możesz spróbować kilku randomowych kombinacji, w końcu zadziała.

0

Próbowałem te kombinacje, jak i kilka innych (pełna ścieżka itd). Zanim napisałem tutaj posta, z 2h szukałem rozwiązania na stacku i forum github i okazuje się, że wiele osób ma ten problem i nie jest to takie banalne. A przynajmniej na Windowsie, bo na macu podobno odpala od razu.

0

Dockerfile i task-0.0.1SNAPSHOT.jar powinny być w jednym katalogu wtedy ADD task-0.0.1SNAPSHOT.jar myapp.jar . Poczytaj o różnicy między ADD a COPY, jeżeli nie musisz to nie korzystaj z ADD a z COPY, ponieważ ADD rozpakowuje w locie skompresowane archiwum jak również możesz pobierać pliki z sieci.

0
lukaszowaty napisał(a):

Dockerfile i task-0.0.1SNAPSHOT.jar powinny być w jednym katalogu wtedy ADD task-0.0.1SNAPSHOT.jar myapp.jar .

title

Poczytaj o różnicy między ADD a COPY, jeżeli nie musisz to nie korzystaj z ADD a z COPY, ponieważ ADD rozpakowuje w locie skompresowane archiwum jak również możesz pobierać pliki z sieci.

title

Próbowałem też z copy niestety bez rezultatów.

0

a możesz w tym dockerfile (bo nigdy nie próbowałem) odpaliś PWD i LS ? gdzie to wgl się znajduje w momencie budowania ? spróbuj podać pełny path do tego pliku, to też opcja.

0
rubaszny_karp napisał(a):

a możesz w tym dockerfile (bo nigdy nie próbowałem) odpaliś PWD i LS ?

Nie dało rady. Unknown instruction.

gdzie to wgl się znajduje w momencie budowania ? spróbuj podać pełny path do tego pliku, to też opcja.

Najpierw było w Moich Dokumentach, ale przeniosłem teraz na C:/dockertest i jest to samo. Próbowałem z tym pełnym pathem, ale po prostu pełna ścieżka jest dopisywana do tej istniejącej i mam coś w stylu: ADD failed: stat /mnt/sda1/var/lib/docker/tmp/dockerbuilderXXXXX/C:/dockertest (...) Poza tym z dokumentacji:

ADD obeys the following rules:

    The <src> path must be inside the context of the build; you cannot ADD ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.

Okej, ale czym jest to Docker context directory ? Jeżeli to mnt/sda1/var... to próbowałem to wyszukać na dysku i wsadzić tam *.jar z Dockerfile, ale problem w tym, że taka lokalizacja u mnie nie istnieje, jest chyba tworzona dopiero w trakcie inicjalizacji docker build, bo te cyfry w nazwie folderu docker-builderXXXXXX za każdym razem są inne.

0

Spróbuj coś w ten sposób po kombinoać: docker build -t image:version -f ./Dockerfile . np. docker build -t nargit/akuna-mata:latest -f Dockerfile .
Oczywiście pozostsając w katalogu z Dockerfile lub podając scieżke. Na linuxie nie ma z tym problemu.

0

Niestety bez efektu. Zaktualizowałem też wersję do 18.03.0, bo tam podobno można dodawać pliki ADDem spoza build context, ale też nie działa. Dodałem też parametr WORKDIR C:/dockertest do Dockerfile, ale dalej ten sam error.

0

Dobra działa, dzień poświęcony na to aby dojść, że w Dockefile mam komendę ADD /task-0.0.1SNAPSHOT.jar myapp.jar, a plik nazywa się task-0.0.1-SNAPSHOT.jar.

0

W sumie to natrafiłem na kolejny problem. Gdy odpalam moją aplikację w normalny sposób w IDE, działa bezproblemowo. A gdy po spakowaniu do kontenera i zpsuhowaniu do dockerhub chcę ją odpalić przez docker run to dostaję:

Error creating bean with name 'passwordEncoder': Requested bean is currently in creation: Is there an unresolvable circular reference?

Wiem na czym polega błąd, ale dlaczego w IDE działa normalnie, a już w Dockerze ma problem ? To jest powszechne ? W Google dużo na ten temat nie ma.

1 użytkowników online, w tym zalogowanych: 0, gości: 1