Respuesta de error del demonio: no hay etapa de compilación en el contexto actual

111

Estaba tratando de ejecutar un contenedor con kvm, usando el código que encontré aquí: https://github.com/jessfraz/dockerfiles/tree/master/kvm Creé un nuevo directorio, cd en él y creé el dockerfile y archivos start.sh. Cuando di la orden de construir, mostró el siguiente mensaje de error:

Envío de contexto de compilación al demonio de Docker 3.584kB Respuesta de error del demonio: No hay etapa de compilación en el contexto actual

No tengo idea de lo que esto significa y no pude buscar en Google una respuesta. Cualquier ayuda será muy apreciada.

usuario3710626
fuente

Respuestas:

206

¿Su dockerfile tiene un: FROM repo/image

¿Como primera línea? Recibí este error cuando olvidé especificar la imagen de la ventana acoplable desde la que estaba construyendo.

Incluso si está creando una "imagen de origen", debe especificar FROM scratchcomo primera línea del archivo docker.

Paul Dejean
fuente
21
Tuve este problema porque estaba configurando ENV para la interfaz de Debian antes del comando FROM. ¡Gracias!
Adamconkey
6
@adamconkey hay un caso especial en el que se le permite tener ARG antes de un FROM. Eso es lo único que está permitido antes de FROM. Aquí hay más información al respecto: docs.docker.com/engine/reference/builder/…
Paul Dejean
No es necesariamente la PRIMERA línea. Tiene que ser la primera línea sin comentarios. Consulte mi respuesta para ver un enlace a la documentación oficial con una explicación.
NoBrainer
@NoBrainer En programación de computadoras, el término "primera línea" casi siempre se refiere a la primera línea sin comentarios.
Paul Dejean
@PaulDejean Docker es administración del sistema, no "programación de computadoras". ;-)
NoBrainer
36

Esto suele ocurrir debido al texto que está escrito antes del comando FROM. Intente eliminar los comentarios en su archivo docker y compile de nuevo.

Para referencia https://github.com/moby/buildkit/issues/164

Yonah Dissen
fuente
1
Este era mi problema exactamente, por alguna razón, incluso las cosas que había comentado estaban causando que arrojara este error. Lo eliminé todo y ahora funciona bien.
jamescampbell
Los comentarios no me han causado ningún problema. Consulte mi respuesta para ver un enlace a la documentación oficial con una explicación.
NoBrainer
18

Este mensaje aparece cuando declaras una variable de entorno ( ENV) antes de declarar FROM.

Por ejemplo:

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

Para resolver esto, intercambie las declaraciones para que las variables de entorno se establezcan después 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
...
Charlie
fuente
16

De acuerdo con la documentación en docs.docker.com , la primera línea sin comentarios de su Dockerfile debe ser la FROMlínea. Para citar los documentos:

La FROMinstrucción inicializa una nueva etapa de construcción y establece la Imagen base para instrucciones posteriores. Como tal, una válida Dockerfiledebe comenzar con una FROMinstrucción.

Pan comido
fuente
use FROM anyBaseImageo useFROM scratch
ahmednabil88
12

El problema esta resuelto. Cuando fui a dockerfile para editar el código, noté que accidentalmente descomentaba la primera línea. Estúpido error, lo sé. Gracias a ambos por la ayuda.

usuario3710626
fuente
6

¡Tuve el mismo problema! Lo que me ayudó fue tener el FROMcomando como el primer comando en el archivo :

MALO :

MAINTAINER your name "[email protected]"
FROM dockerimagename

BUENO :

FROM dockerimagename
MAINTAINER your name "[email protected]"
Aleksandras Urbonas
fuente