การตอบสนองข้อผิดพลาดจาก daemon: ไม่มีขั้นตอนการสร้างในบริบทปัจจุบัน


116

ฉันพยายามเรียกใช้คอนเทนเนอร์ด้วย kvm โดยใช้รหัสที่ฉันพบที่นี่: https://github.com/jessfraz/dockerfiles/tree/master/kvm ฉันสร้างไดเร็กทอรีใหม่ cd ลงในนั้นและสร้าง dockerfile และ start.sh ไฟล์ เมื่อฉันสั่งให้สร้างมันแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:

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

ฉันไม่รู้ว่านี่หมายถึงอะไรและฉันไม่สามารถหาคำตอบจาก Google ได้ ความช่วยเหลือใด ๆ

คำตอบ:


213

dockerfile ของคุณมี: FROM repo/image

เป็นบรรทัดแรก? ฉันได้รับข้อผิดพลาดนี้เมื่อฉันลืมระบุอิมเมจนักเทียบท่าที่ฉันกำลังสร้าง

แม้ว่าคุณจะสร้าง "ซอร์สอิมเมจ" แต่คุณยังต้องระบุFROM scratchเป็นบรรทัดแรกของ dockerfile


21
ฉันมีปัญหานี้เนื่องจากฉันกำลังตั้งค่า ENV สำหรับส่วนหน้าเดเบียนก่อนคำสั่ง FROM ขอบคุณ!
adamconkey

7
@adamconkey มีกรณีพิเศษที่คุณได้รับอนุญาตให้มี ARG ก่อน FROM นั่นเป็นสิ่งเดียวที่ได้รับอนุญาตให้อยู่ก่อน FROM ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้: docs.docker.com/engine/reference/builder/…
Paul Dejean

ไม่จำเป็นต้องเป็นบรรทัดแรก มันต้องเป็นบรรทัดแรกที่ไม่แสดงความคิดเห็น ตรวจสอบคำตอบของฉันสำหรับลิงก์ไปยังเอกสารอย่างเป็นทางการพร้อมคำอธิบาย
NoBrainer

@NoBrainer ในการเขียนโปรแกรมคอมพิวเตอร์คำว่า "บรรทัดแรก" มักหมายถึงบรรทัดแรกที่ไม่มีความคิดเห็น
Paul Dejean

36

สิ่งนี้มักเกิดขึ้นเนื่องจากข้อความที่เขียนก่อนคำสั่ง FROM ลองลบความคิดเห็นใน dockerfile ของคุณแล้วสร้างอีกครั้ง

สำหรับการอ้างอิงhttps://github.com/moby/buildkit/issues/164


1
นี่เป็นปัญหาของฉันด้วยเหตุผลบางอย่างแม้แต่สิ่งที่ฉันแสดงความคิดเห็นก็ทำให้เกิดข้อผิดพลาดนี้ ฉันลบออกทั้งหมดและใช้งานได้ดีในตอนนี้
jamescampbell

ความคิดเห็นไม่ได้ทำให้ฉันเกิดปัญหาใด ๆ ตรวจสอบคำตอบของฉันสำหรับลิงก์ไปยังเอกสารอย่างเป็นทางการพร้อมคำอธิบาย
NoBrainer

19

ข้อความนี้จะปรากฏขึ้นเมื่อคุณประกาศตัวแปรสภาพแวดล้อม ( ENV) FROMก่อนที่จะประกาศ

ตัวอย่างเช่น:

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

ในการแก้ไขปัญหานี้ให้สลับการประกาศเพื่อให้ตัวแปรสภาพแวดล้อมถูกตั้งค่าหลังจาก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
...

18

ตามเอกสารใน docs.docker.com บรรทัดแรกที่ไม่มีความคิดเห็นของ Dockerfile ต้องเป็นFROMบรรทัด ในการอ้างอิงเอกสาร:

FROMคำแนะนำเริ่มต้นการสร้างเวทีใหม่และชุดภาพฐานสำหรับคำแนะนำที่ตามมา ดังนั้นจึงDockerfileต้องเริ่มต้นด้วยFROMคำสั่งที่ถูกต้อง


ใช้อย่างใดอย่างหนึ่งFROM anyBaseImageหรือใช้FROM scratch
ahmednabil88

12

ปัญหาได้รับการแก้ไข เมื่อฉันไปที่ dockerfile เพื่อแก้ไขโค้ดฉันสังเกตเห็นว่าฉันไม่ได้ใส่คอมเม้นต์บรรทัดแรกโดยไม่ได้ตั้งใจ ฉันรู้ผิดพลาดโง่ ๆ ขอบคุณทั้งสองท่านสำหรับความช่วยเหลือ


6

ฉันมีปัญหาเดียวกัน! สิ่งที่ช่วยฉันคือมีFROMคำสั่งเป็นคำสั่งแรกในไฟล์ :

ไม่ดี :

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

ดี :

FROM dockerimagename
MAINTAINER your name "your@email.com"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.