가끔 빌드 킷으로 빌드하고 다른 시간에는 표준 도커 빌드 로 빌드하고 싶은 도커 컨테이너가 있습니다. 다음과 같은 컨테이너가 있다고 상상해보십시오.
# syntax=docker/dockerfile:experimental
FROM python:3.8
# Install all necessary libraries into a pyenv environment
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
RUN --mount=type=ssh pip install -r api-requirements.txt
우리는 --mount=type=ssh
개인 저장소에서 pip를 설치할 때 여기에서 ssh 키를 사용하도록 buildkit에 플래그를 사용합니다. 다음 명령으로 빌드를 위해 Buildkit을 사용하면 모든 것이 잘 작동합니다.
ssh-add && cd api && DOCKER_BUILDKIT=1 docker build --no-cache --ssh default -t image-name .
그러나 다음과 같은 표준 도커 명령으로 더 이상이 컨테이너를 빌드 할 수 없습니다.
docker build -t image-name .
--mount
플래그가 인식되지 않기 때문 입니다. 어쨌든 빌드 킷과 일반적으로 모두 편집하지 않고 동일한 Dockerfile을 사용할 수 있습니까? Docker에게 이러한 플래그를 무시하도록 지시 할 수 있습니까?
있다 개방형 RFC 문제를 알 수없는 플래그를 무시하는 방법이 유용 할 경우 고려하고 이에 대한이. 그러나 알 수없는 플래그에 대해이 작업을 자동으로 수행하면 수정 된 것보다 더 많은 손상이 발생할 수 있습니다. 예를 들어 ssh 자격 증명을 탑재하면 자격 증명없이 빌드가 실패 할 가능성이 큽니다.
이 상황에서 조언은 모든 기능이 포함 된 빌드 킷 기반 빌드에 대해 별도의 Dockerfile을 유지하고 수동으로 동기화 상태를 유지하거나 빌드 킷 또는 클래식 빌더 중 하나로 모든 빌드를 완료하도록 푸시하는 경향이 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다