5장. 빌드 전략 사용
다음 섹션에서는 지원되는 주요 빌드 전략과 이러한 전략을 사용하는 방법을 정의합니다.
5.1. Docker 빌드 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform은 Buildah를 사용하여 Dockerfile에서 컨테이너 이미지를 빌드합니다. Dockerfile을 사용하여 컨테이너 이미지를 빌드하는 방법에 대한 자세한 내용은 Dockerfile 참조 문서를 참조하십시오.
buildArgs
배열을 사용하여 Docker 빌드 인수를 설정하는 경우 Dockerfile 참조 문서에서 ARG 및 FROM이 상호 작용하는 방법 이해를 참조하십시오.
5.1.1. Dockerfile FROM 이미지 교체 링크 복사링크가 클립보드에 복사되었습니다!
Dockerfile의 FROM
명령을 BuildConfig
오브젝트의 from
매개변수로 교체할 수 있습니다. Dockerfile에서 다중 단계 빌드를 사용하는 경우 마지막 FROM
명령의 이미지가 교체됩니다.
프로세스
Dockerfile의
FROM
명령을BuildConfig
오브젝트의from
매개변수로 교체하려면BuildConfig
오브젝트에 다음 설정을 추가합니다.strategy: dockerStrategy: from: kind: "ImageStreamTag" name: "debian:latest"
strategy: dockerStrategy: from: kind: "ImageStreamTag" name: "debian:latest"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2. Dockerfile 경로 사용 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Docker 빌드는 BuildConfig.spec.source.contextDir
필드에 지정된 컨텍스트의 루트에 있는 Dockerfile을 사용합니다.
dockerfilePath
필드를 사용하면 BuildConfig.spec.source.contextDir
필드와 상대되는 다른 경로를 사용하여 Dockerfile을 찾을 수 있습니다. 파일 이름은 기본 Dockerfile(예: MyDockerfile
) 또는 하위 디렉터리의 Dockerfile 경로(예: dockerfiles/app1/Dockerfile
)와 다를 수 있습니다.
프로세스
빌드에서 다른 경로를 사용하여 Dockerfile을 찾도록
dockerfilePath
필드를 설정합니다.strategy: dockerStrategy: dockerfilePath: dockerfiles/app1/Dockerfile
strategy: dockerStrategy: dockerfilePath: dockerfiles/app1/Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3. Docker 환경 변수 사용 링크 복사링크가 클립보드에 복사되었습니다!
Docker 빌드 프로세스 및 생성된 이미지에 환경 변수를 사용할 수 있도록 빌드 구성의 dockerStrategy
정의에 환경 변수를 추가할 수 있습니다.
정의된 환경 변수는 FROM
명령 직후 단일 ENV
Dockerfile 명령으로 삽입되어 나중에 Dockerfile 내에서 참조할 수 있습니다.
변수는 빌드 중 정의되고 출력 이미지에 유지되므로 해당 이미지를 실행하는 모든 컨테이너에도 존재합니다.
예를 들어 다음은 빌드 및 런타임 중 사용할 사용자 정의 HTTP 프록시를 정의합니다.
dockerStrategy: ... env: - name: "HTTP_PROXY" value: "http://myproxy.net:5187/"
dockerStrategy:
...
env:
- name: "HTTP_PROXY"
value: "http://myproxy.net:5187/"
oc set env
명령을 사용하면 빌드 구성에 정의된 환경 변수도 관리할 수 있습니다.
5.1.4. Docker 빌드 인수 추가 링크 복사링크가 클립보드에 복사되었습니다!
buildArgs
배열을 사용하여 Docker 빌드 인수를 설정할 수 있습니다. 빌드 인수는 빌드가 시작될 때 Docker에 전달됩니다.
Dockerfile 참조 문서에서 ARG 및 FROM이 상호 작용하는 방법 이해를 참조하십시오.
프로세스
Docker 빌드 인수를 설정하려면
BuildConfig
오브젝트의dockerStrategy
정의에 있는buildArgs
배열에 항목을 추가합니다. 예를 들면 다음과 같습니다.dockerStrategy: ... buildArgs: - name: "version" value: "latest"
dockerStrategy: ... buildArgs: - name: "version" value: "latest"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고name
및value
필드만 지원됩니다.valueFrom
필드의 설정은 모두 무시됩니다.
5.1.5. Docker 빌드를 사용하여 계층 스쿼싱 링크 복사링크가 클립보드에 복사되었습니다!
Docker 빌드는 일반적으로 Dockerfile의 각 명령을 나타내는 계층을 생성합니다. imageOptimizationPolicy
를 SkipLayers
로 설정하면 모든 명령을 기본 이미지 상단의 단일 계층으로 병합합니다.
프로세스
imageOptimizationPolicy
를SkipLayers
로 설정합니다.strategy: dockerStrategy: imageOptimizationPolicy: SkipLayers
strategy: dockerStrategy: imageOptimizationPolicy: SkipLayers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.6. 빌드 볼륨 사용 링크 복사링크가 클립보드에 복사되었습니다!
빌드 볼륨을 마운트하여 출력 컨테이너 이미지에 유지하려고 하지 않는 정보에 대한 액세스 권한을 실행 중인 빌드에 부여할 수 있습니다.
빌드 볼륨은 빌드 환경 또는 구성이 빌드 시에만 필요한 리포지토리 자격 증명과 같은 중요한 정보를 제공합니다. 빌드 볼륨은 출력 컨테이너 이미지에 데이터가 지속될 수 있는 빌드 입력과 다릅니다.
실행 중인 빌드 볼륨에서 데이터를 읽는 빌드 볼륨의 마운트 지점은 Pod 볼륨 마운트 와 기능적으로 유사합니다.
사전 요구 사항
- 입력 보안, 구성 맵 또는 둘 다를 BuildConfig 오브젝트에 추가했습니다.
프로세스
BuildConfig
오브젝트의dockerStrategy
정의에서volumes
배열에 빌드 볼륨을 추가합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 5 9
- 필수 항목입니다. 고유한 이름입니다.
- 2 6 10
- 필수 항목입니다. 마운트 지점의 절대 경로입니다.
..
또는:
을 포함하지 않아야 하며 빌더에서 생성한 대상 경로와 충돌하지 않아야 합니다./opt/app-root/src
는 많은 Red Hat S2I 지원 이미지의 기본 홈 디렉토리입니다. - 3 7 11
- 필수 항목입니다. 소스,
ConfigMap
,Secret
또는CSI
의 유형입니다. - 4 8
- 필수 항목입니다. 소스 이름입니다.
- 12
- 필수 항목입니다. 임시 CSI 볼륨을 제공하는 드라이버입니다.
- 13
- 필수 항목입니다. 이 값은
true
로 설정해야 합니다. 읽기 전용 볼륨을 제공합니다. - 14
- 선택 사항: 임시 CSI 볼륨의 볼륨 속성입니다. 지원되는 속성 키와 값은 CSI 드라이버의 설명서를 참조하십시오.
중요공유 리소스 CSI 드라이버는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
공유 리소스 CSI 드라이버는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.