Dockerfile에서 빌드 할 때 데비안 / 우분투 패키지 설치 debconf 비 대화식 설치는 허용되지 않습니다


29

apt-get 설치 중에 질문 / 대화 상자가 표시되지 않도록 다음 환경을 설정했습니다.

ENV DEBIAN_FRONTEND noninteractive    # export DEBIAN_FRONTEND="noninteractive"

다음과 같습니다.

export DEBIAN_FRONTEND="noninteractive"

그러나 Dockerfile에서 이미지를 빌드 할 때 특정 abian / Ubuntu 패키지 설치가 종료되면 (apt-get install 사용) 패키지 구성 debconf는 다음과 같이 말합니다.

debconf: unable to initialize frontend: Noninteractive    # export DEBIAN_FRONTEND="noninteractive"
debconf: (Bareword "Debconf::FrontEnd::Noninteractive" not allowed while "strict subs" in use at (eval 35) line 3, <> line 1.)
debconf: falling back to frontend: Noninteractive
Subroutine BEGIN redefined at (eval 36) line 2, <> line 1.

와우 ... 내 오류를 발견했다. Dockerfile의 ENV 줄에 주석을 넣을 방법이 없습니다. 나는 이것이 다른 사람들을 물리 칠 것이라고 확신하면서 나 자신에게 대답 할 것입니다 ...

답변:


57

해야한다 적극적으로 낙심 을 설정 DEBIAN_FRONTENDnoninteractive통해 ENV. 이유는 빌드 후 환경 변수가 지속되기 때문입니다 (예 : 실행시) docker exec -it ... bash. 이 설정은 의미가 없습니다.

가능한 두 가지 방법이 있습니다.

  1. ARG빌드하는 동안에 만 사용할 수 있으므로 설정하십시오 .

    ARG DEBIAN_FRONTEND=noninteractive
    RUN apt-get -qq install {your-package}
    
  2. 필요할 때 즉시 설정하십시오.

    RUN apt-get update && \
        DEBIAN_FRONTEND=noninteractive apt-get -qq install {your-package}
    

8
투표 전용으로 가입
André Werlang

@ AndréWerlang : 저도 요!
gvgramazio

27

문제의 원인은 다음과 같습니다. # env를 사용하여 Dockerfiles에 ENV 줄에 주석을 달 수 없습니다. "env 변수의 끝"이라고 말할 수있는 구분 기호가 없기 때문에 변수 이름 다음에 나오는 모든 것과 뒤에 공백이있을 것입니다. 변하기 쉬운.

즉, Dockerfile 줄을 사용하십시오.

ENV DEBIAN_FRONTEND noninteractive    # export DEBIAN_FRONTEND="noninteractive"

변수 :

DEBIAN_FRONTEND

이 전체 줄을 정확히 포함합니다.

noninteractive    # export DEBIAN_FRONTEND="noninteractive"

다음을 수행하는 것과 같습니다.

export DEBIAN_FRONTEND='noninteractive    # export DEBIAN_FRONTEND="noninteractive"'

나는 거의 내 질문을 취소하고 있었지만 검색 엔진과 스택 교환을 사용하면 언젠가 여기에서 실수를 발견 할 것입니다 ;-)


5
이것이 실제 답변 인 경우 질문에 더 이상 답변이없는 것으로 표시되지 않도록 수락해야합니다.
Andy Shinn

4
ENV대한 사용 을 권장하지 않습니다 DEBIAN_FRONTEND. github.com/docker/docker/issues/4032
k0pernikus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.