Docker 빌드 경고 줄이기
다음은 Dockerfile 빌드 시 나타날 수 있는 경고를 제거하기 위한 몇 가지 팁입니다.
debconf: apt-utils가 설치되지 않아 패키지 구성을 지연합니다.
이 오류는 일반적으로 안전하게 무시할 수 있으며 완전히 제거하기 어렵습니다. 하지만 Dockerfile에 다음을 추가하여 필요한 패키지를 설치할 때 표준 출력으로 메시지를 하나만 표시하도록 줄일 수 있습니다.
RUN apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1
경고: apt-key 출력은 구문 분석하면 안 됩니다(표준 출력이 터미널이 아님).
이 중요하지 않은 경고는 apt-key 출력을 구문 분석하지 말라고 알려주므로 스크립트가 구문 분석하지 않는 한 문제가 없습니다. 안전하게 무시할 수 있습니다.
이것은 apt-key 명령이 터미널에서 실행되지 않기 때문에 Dockerfile에서 발생합니다. 안타깝게도 이 오류는 완전히 제거할 수는 없지만 apt-key 명령이 0이 아닌 종료 코드(실패를 나타냄)를 반환하는 경우를 제외하고는 숨길 수 있습니다.
예를 들어,
# (OUT=$(apt-key add - 2>&1) || echo $OUT) will only print the output with non-zero exit code is hit
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | (OUT=$(apt-key add - 2>&1) || echo $OUT)
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE 환경 변수를 설정하여 경고를 억제할 수도 있지만, 조금 무서워 보이므로 사용하는 경우 Dockerfile에 주석을 추가하여 반드시 명시하세요.
# Suppress an apt-key warning about standard out not being a terminal. Use in this script is safe.
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
빨간색으로 표시되는 정보 메시지
일부 CLI는 디버그 세부 정보와 같은 특정 정보를 표준 출력 대신 표준 오류로 출력합니다. Visual Studio Code의 터미널 및 출력 로그에 빨간색으로 표시됩니다.
메시지가 무해한 경우 명령의 출력을 표준 오류에서 표준 출력으로 리디렉션하여 명령 끝에 2>&1을 추가할 수 있습니다.
예를 들어,
RUN apt-get -y install --no-install-recommends apt-utils dialog 2>&1
명령이 실패하면 여전히 오류를 볼 수 있지만 빨간색으로 표시되지는 않습니다.
Docker로 빌드된 이미지의 문제 방지
Dockerfile 및 Docker Compose 파일을 VS Code 또는 devcontainer CLI 없이 사용할 수 있으므로, 예상대로 작동하지 않을 경우 사용자가 이미지를 직접 빌드하려고 시도하지 않도록 알리고 싶을 수 있습니다. 이 문제를 해결하려면 작동하도록 지정해야 하는 빌드 인수를 추가할 수 있습니다.
예를 들어 Dockerfile에 다음을 추가할 수 있습니다.
ARG vscode
RUN if [[ -z "$devcontainercli" ]] ; then printf "\nERROR: This Dockerfile needs to be built with VS Code !" && exit 1; else printf "VS Code is detected: $devcontainercli"; fi
그리고 devcontainer.json에 다음을 추가합니다.
"build": {
"dockerfile": "Dockerfile",
"args": {
// set devcontainer-cli arg for Dockerfile
"devcontainercli": "true"
},
}
Docker Compose의 경우, 기본 Docker Compose 파일과 다른 위치에 있는 별도의 구성 확장을 위한 오버라이드 파일에 이 인수를 추가할 수 있습니다.