Risposta di errore dal daemon: nessuna fase di compilazione nel contesto corrente


111

Stavo cercando di eseguire un container con kvm, usando il codice che ho trovato qui: https://github.com/jessfraz/dockerfiles/tree/master/kvm Ho creato una nuova directory, ci ho inserito un cd e ho creato il dockerfile e file start.sh. Quando ho dato l'ordine di costruire, ha emesso il seguente messaggio di errore:

Invio del contesto di build al daemon Docker 3.584kB Risposta di errore dal daemon: nessuna fase di build nel contesto corrente

Non ho idea di cosa significhi e non ho potuto trovare una risposta su Google. Qualsiasi aiuto sarebbe molto apprezzato.

Risposte:


206

Il tuo dockerfile ha un: FROM repo/image

Come prima riga? Ho ricevuto questo errore quando ho dimenticato di specificare l'immagine della finestra mobile da cui stavo creando.

Anche se stai creando una "immagine sorgente", devi comunque specificare FROM scratchcome prima riga del dockerfile.


21
Ho avuto questo problema perché stavo impostando ENV per il frontend Debian prima del comando FROM. Grazie!
adamconkey

6
@adamconkey c'è un caso speciale in cui ti è permesso avere ARG prima di FROM. Questa è l'unica cosa che può essere prima di FROM. Ecco qualche informazione in più a riguardo: docs.docker.com/engine/reference/builder/…
Paul Dejean

Non è necessariamente la PRIMA riga. Deve essere solo la prima riga senza commenti. Controlla la mia risposta per un collegamento alla documentazione ufficiale con una spiegazione.
NoBrainer

@NoBrainer Nella programmazione di computer, il termine "prima riga" si riferisce quasi sempre alla prima riga senza commenti.
Paul Dejean

@PaulDejean Docker è l'amministrazione del sistema, non la "programmazione del computer". ;-)
NoBrainer

36

Questo di solito accade a causa del testo scritto prima del comando FROM. Prova a rimuovere i commenti nel tuo dockerfile e crea di nuovo.

Per riferimento https://github.com/moby/buildkit/issues/164


1
Questo era esattamente il mio problema, per qualche motivo anche le cose che avevo commentato stavano causando questo errore. Ho rimosso tutto e ora funziona bene.
jamescampbell

I commenti non mi hanno causato problemi. Controlla la mia risposta per un collegamento alla documentazione ufficiale con una spiegazione.
NoBrainer

18

Questo messaggio appare quando dichiari una variabile d'ambiente ( ENV) prima di dichiarareFROM .

Per esempio:

# 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
...

Per risolvere questo problema, scambiare le dichiarazioni in modo che tutte le variabili di ambiente vengano impostate dopo 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
...

16

Secondo la documentazione su docs.docker.com , la prima riga non di commento del Dockerfile deve essere la FROMriga. Per citare i documenti:

L' FROMistruzione inizializza una nuova fase di compilazione e imposta l' immagine di base per le istruzioni successive. Come tale, un valido Dockerfiledeve iniziare con FROMun'istruzione.


utilizzare FROM anyBaseImageo utilizzareFROM scratch
ahmednabil88

12

Il problema è stato risolto. Quando sono andato a dockerfile per modificare il codice ho notato che ho decommentato accidentalmente la prima riga. Stupido errore, lo so. Grazie ad entrambi per l'aiuto.


6

Ho avuto lo stesso problema! Ciò che mi ha aiutato è stato avere il FROMcomando come primo comando nel file :

CATTIVO :

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

BUONO :

FROM dockerimagename
MAINTAINER your name "your@email.com"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.