Odpowiedź na błąd od demona: Brak etapu kompilacji w bieżącym kontekście


116

Próbowałem uruchomić kontener z kvm, używając kodu, który znalazłem tutaj: https://github.com/jessfraz/dockerfiles/tree/master/kvm Stworzyłem nowy katalog, do niego cd-dałem i utworzyłem plik dockerfile i pliki start.sh. Kiedy wydałem polecenie kompilacji, wyświetlił się następujący komunikat o błędzie:

Sending build context to Docker daemon  3.584kB
Error response from daemon: No build stage in current context

Nie mam pojęcia, co to oznacza i nie mogłem znaleźć w Google odpowiedzi. Jakaś pomoc?

Odpowiedzi:


213

Czy twój plik dockerfile ma: FROM repo/image

Jako pierwsza linia? Pojawił się ten błąd, gdy zapomniałem określić obraz Dockera, z którego budowałem.

Nawet jeśli tworzysz „obraz źródłowy”, nadal musisz określić FROM scratchjako pierwszą linię pliku dockerfile.


21
Miałem ten problem, ponieważ ustawiałem ENV dla frontendu Debiana przed poleceniem FROM. Dzięki!
adamconkey

7
@adamconkey jest specjalny przypadek, w którym możesz mieć ARG przed FROM. To jedyna rzecz, która może być przed OD. Oto więcej informacji na ten temat: docs.docker.com/engine/reference/builder/ ...
Paul Dejean

Niekoniecznie jest to PIERWSZA linia. To musi być pierwsza linia bez komentarza. Sprawdź moją odpowiedź, aby uzyskać link do oficjalnej dokumentacji z wyjaśnieniem.
NoBrainer

@NoBrainer W programowaniu komputerowym termin „pierwsza linia” prawie zawsze odnosi się do pierwszej linii bez komentarza.
Paul Dejean

36

Dzieje się tak zwykle z powodu tekstu, który jest zapisywany przed poleceniem OD. Spróbuj usunąć komentarze z pliku dockerfile i skompiluj ponownie.

W celach informacyjnych https://github.com/moby/buildkit/issues/164


1
To był dokładnie mój problem, z jakiegoś powodu nawet rzeczy, które skomentowałem, powodowały, że wyrzucał ten błąd. Usunąłem to wszystko i teraz działa dobrze.
jamescampbell

Komentarze nie sprawiły mi żadnych problemów. Sprawdź moją odpowiedź, aby uzyskać link do oficjalnej dokumentacji z wyjaśnieniem.
NoBrainer

19

Ten komunikat pojawia się, gdy deklarujesz zmienną środowiskową ( ENV) przed deklaracją FROM.

Na przykład:

# Define variables.
ARG PORT
ENV SERVER_PORT=$PORT

# Install minimal Python 3.
FROM python:3.7-alpine

# Install Python requirements.
COPY requirements.txt /
RUN pip install -r /requirements.txt

# Copy app source code.
COPY src/ /app
...

Aby rozwiązać ten problem, zamień deklaracje, tak aby wszystkie zmienne środowiskowe były ustawione po FROM.

# Install minimal Python 3.
FROM python:3.7-alpine

# Define variables.
ARG PORT
ENV SERVER_PORT=${PORT}

# Install Python requirements.
COPY requirements.txt /
RUN pip install -r /requirements.txt

# Copy app source code.
COPY src/ /app
...


12

Problem został rozwiązany. Kiedy przeszedłem do dockerfile, aby edytować kod, zauważyłem, że przypadkowo odkomentowałem pierwszą linię. Wiem, głupi błąd. Dziękuję obojgu za pomoc.


6

Miałem ten sam problem! Pomogło mi posiadanie FROMpolecenia jako pierwszego polecenia w pliku :

ZŁE :

MAINTAINER your name "your@email.com"
FROM dockerimagename

DOBRY :

FROM dockerimagename
MAINTAINER your name "your@email.com"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.