programing

데몬의 오류 응답:현재 컨텍스트에 빌드 단계가 없습니다.

lastcode 2023. 7. 31. 21:24
반응형

데몬의 오류 응답:현재 컨텍스트에 빌드 단계가 없습니다.

저는 여기서 찾은 코드를 사용하여 KVM으로 컨테이너를 실행하려고 했습니다. https://github.com/jessfraz/dockerfiles/tree/master/kvm 저는 새로운 디렉토리를 만들고 거기에 CD를 넣고 도커 파일과 start.sh 파일을 만들었습니다.빌드 명령을 내렸을 때 다음과 같은 오류 메시지가 출력되었습니다.

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

이것이 무엇을 의미하는지 전혀 모르고 구글에서 답변을 찾을 수 없었습니다.도와드릴까요?

도커 파일에 다음이 있습니까?FROM repo/image

첫 번째 대사로?빌드할 도커 이미지를 지정하는 것을 잊었을 때 이 오류가 발생했습니다.

"소스 이미지"를 빌드하는 경우에도 지정해야 합니다.FROM scratch도커 파일의 첫 번째 줄로 지정합니다.

이 문제는 일반적으로 FROM 명령 앞에 작성된 텍스트 때문에 발생합니다.도커 파일에서 주석을 제거하고 다시 빌드해 보십시오.

참고용으로 https://github.com/moby/buildkit/issues/164 .

이 메시지는 환경 변수(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
...

docs.docker.com 의 문서에 따르면 Docker 파일의 첫 번째 비매칭 행은 다음과 같아야 합니다.FROM문서를 인용하자면:

FROM명령은 새 빌드 단계를 초기화하고 이후 명령에 사용할 기본 이미지를 설정합니다.이와 같이, 유효한Dockerfile다음으로 시작해야 합니다.FROM설명.

사용하지 않는 제품을 계속 사용하는 경우MAINTAINER키워드, 당신은 반드시 가지고 있어야 합니다.FROM명령을 첫 번째 명령으로 사용합니다.Dockerfile:

불량:

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

양호:

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

문제가 해결되었습니다.코드를 편집하기 위해 도커 파일로 이동했을 때 실수로 첫 줄의 주석을 제거한 것을 발견했습니다.바보 같은 실수, 알아요.두 분 모두 도와주셔서 감사합니다.

제 경우는 제가 그랬기 때문에.ENV앞에 명시된.FROM그리고 이미 언급했듯이,FROM도커 파일의 첫 번째 식이어야 합니다.

그렇지만

PR https://github.com/moby/moby/pull/31352 이후로 지정할 수 있습니다.ARG전에FROM당신에게 적합한 대안일 수도 있습니다.

그래서 나는 변했습니다.

ENV MY_VAR 1
FROM ...

로.

ARG MY_VAR=1
FROM ...

참고로 ARG 대 ENV의 차이점에 대해서는 여기를 참조하십시오. https://vsupalov.com/docker-arg-vs-env/

저는 이것이 당신의 경우라고 생각하지 않지만, 다른 사람이 그 오류를 해결하는 데 도움이 될 수도 있습니다.

  1. 내 도커 파일은 그 오류 없이 실행되었습니다.
  2. 도커 파일의 시작 부분에 "FROM vcatechnology/linux-mint:18.2"를 추가했는데, 오류도 없습니다.
  3. FROM 문을 다시 삭제한 후에도 여전히 검색 중이어서 이 오류가 발생했습니다.
  4. FROM 문을 다시 추가해야만 오류를 제거할 수 있었습니다.

따라서 이 오류는 FROM 문으로 시작하는 도커 파일을 사용한 후 FROM 문을 다시 삭제한 경우에만 나타날 수 있습니다.

제 경우에는 RUN을 FROM으로 변경했습니다.

이전 도커 파일:

RUN php:8-apache

COPY /src var/www/html/

ENV APACHE_DOCUMENT_ROOT ./src/public/

RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf

RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

EXPOSE 80

새 도커 파일:

FROM php:8-apache

COPY /src var/www/html/

ENV APACHE_DOCUMENT_ROOT ./src/public/

RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf

RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

EXPOSE 80

언급URL : https://stackoverflow.com/questions/50452860/error-response-from-daemon-no-build-stage-in-current-context

반응형