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.