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.

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.


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


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

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.


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.


6

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

MALO :

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

BUENO :

FROM dockerimagename
MAINTAINER your name "your@email.com"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.