5.2. S2I(Source-to-Image) 빌드
S2I(Source-to-Image)는 재현 가능한 컨테이너 이미지를 빌드하는 툴입니다. 컨테이너 이미지에 애플리케이션 소스를 삽입하고 새 이미지를 어셈블하여 실행할 수 있는 이미지를 생성합니다. 새 이미지는 기본 이미지, 빌더, 빌드 소스를 통합하고 buildah run
명령과 함께 사용할 수 있습니다. S2I는 이전에 다운로드한 종속 항목, 이전에 빌드한 아티팩트 등을 다시 사용하는 증분 빌드를 지원합니다.
5.2.1. S2I(Source-to-Image) 증분 빌드 수행 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image)는 증분 빌드를 수행할 수 있으므로 이전에 빌드한 이미지의 아티팩트를 재사용할 수 있습니다.
5.2.2. S2I(Source-to-Image) 빌더 이미지 스크립트 덮어쓰기 링크 복사링크가 클립보드에 복사되었습니다!
빌더 이미지에서 제공하는 assemble
, run
, save-artifacts
S2I(Source-to-Image) 스크립트를 덮어쓸 수 있습니다.
프로세스
빌더 이미지에서 제공하는
assemble
,run
,save-artifacts
S2I 스크립트를 덮어쓰려면 다음 중 하나를 수행합니다.-
애플리케이션 소스 리포지토리의
.s2i/bin
디렉터리에assemble
,run
, 또는save-artifacts
스크립트를 제공합니다. BuildConfig
오브젝트의 전략 정의의 일부로 스크립트가 포함된 디렉터리의 URL을 제공합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 빌드 프로세스는
run
,assemble
,save-artifacts
를 경로에 추가합니다. 이러한 이름이 있는 스크립트 또는 모든 스크립트가 있는 경우 빌드 프로세스에서 이미지에 제공된 이름이 동일한 스크립트 대신 이러한 스크립트를 사용합니다.
참고scripts
URL에 있는 파일은 소스 리포지토리의.s2i/bin
에 있는 파일보다 우선합니다.
-
애플리케이션 소스 리포지토리의
5.2.3. S2I(Source-to-Image) 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
소스 빌드 프로세스와 결과 이미지에서 환경 변수를 사용할 수 있도록 하는 방법은 환경 파일과 BuildConfig
환경 값입니다. 두 방법 중 하나를 사용하여 제공하는 변수는 빌드 프로세스 중 출력 이미지에 제공됩니다.
5.2.3.1. S2I(Source-to-Image) 환경 파일 사용 링크 복사링크가 클립보드에 복사되었습니다!
소스 빌드를 사용하면 소스 리포지토리의 .s2i/environment
파일에 지정하는 방식으로 애플리케이션 내에서 행당 하나씩 환경 값을 설정할 수 있습니다. 이 파일에 지정된 환경 변수는 빌드 프로세스 중 출력 이미지에 제공됩니다.
소스 리포지토리에 .s2i/environment
파일을 제공하는 경우 빌드 중 S2I(Source-to-Image)에서 이 파일을 읽습니다. 그러면 assemble
스크립트에서 이러한 변수를 사용할 수 있으므로 빌드 동작을 사용자 정의할 수 있습니다.
프로세스
예를 들어 빌드 중 Rails 애플리케이션의 자산 컴파일을 비활성화하려면 다음을 수행합니다.
-
.s2i/environment
파일에DISABLE_ASSET_COMPILATION=true
를 추가합니다.
빌드 외에 지정된 환경 변수도 실행 중인 애플리케이션 자체에서 사용할 수 있습니다. 예를 들어 Rails 애플리케이션이 production
대신 development
모드에서 시작되도록 하려면 다음을 수행합니다.
-
RAILS_ENV=development
를.s2i/environment
파일에 추가합니다.
지원되는 환경 변수의 전체 목록은 각 이미지의 이미지 사용 섹션에서 확인할 수 있습니다.
5.2.3.2. S2I(Source-to-Image) 빌드 구성 환경 사용 링크 복사링크가 클립보드에 복사되었습니다!
빌드 구성의 sourceStrategy
정의에 환경 변수를 추가할 수 있습니다. 여기에 정의된 환경 변수는 assemble
스크립트를 실행하는 동안 표시되고 출력 이미지에 정의되어 run
스크립트 및 애플리케이션 코드에서도 사용할 수 있습니다.
프로세스
예를 들어 Rails 애플리케이션의 자산 컴파일을 비활성화하려면 다음을 수행합니다.
sourceStrategy: ... env: - name: "DISABLE_ASSET_COMPILATION" value: "true"
sourceStrategy: ... env: - name: "DISABLE_ASSET_COMPILATION" value: "true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4. S2I(Source-to-Image) 소스 파일 무시 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image)는 무시해야 하는 파일 패턴 목록이 포함된 .s2iignore
파일을 지원합니다. .s2iignore
파일에 있는 패턴과 일치하고 다양한 입력 소스에서 제공하는 빌드 작업 디렉터리의 파일은 assemble
스크립트에서 사용할 수 없습니다.
5.2.5. S2I(Source-to-Image)를 사용하여 소스 코드에서 이미지 생성 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image)는 애플리케이션 소스 코드를 입력으로 사용하고 어셈블된 애플리케이션을 실행하는 새 이미지를 출력으로 생성하는 이미지를 쉽게 작성할 수 있는 프레임워크입니다.
재현 가능한 컨테이너 이미지를 빌드하는 데 S2I를 사용하는 주요 장점은 개발자가 쉽게 사용할 수 있다는 점입니다. 빌더 이미지 작성자는 이미지에서 최상의 S2I 성능, 빌드 프로세스, S2I 스크립트를 제공하도록 두 가지 기본 개념을 이해해야 합니다.
5.2.5.1. S2I(Source-to-Image) 빌드 프로세스 이해 링크 복사링크가 클립보드에 복사되었습니다!
빌드 프로세스는 최종 컨테이너 이미지로 통합되는 다음 세 가지 기본 요소로 구성됩니다.
- 소스
- S2I(Source-to-Image) 스크립트
- 빌더 이미지
S2I는 첫 번째 FROM
명령으로 빌더 이미지가 포함된 Dockerfile을 생성합니다. 그런 다음 S2I에서 생성된 Dockerfile은 Buildah로 전달됩니다.
5.2.5.2. S2I(Source-to-Image) 스크립트를 작성하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
스크립트를 빌더 이미지 내에서 실행할 수 있는 경우 모든 프로그래밍 언어로 S2I(Source-to-Image) 스크립트를 작성할 수 있습니다. S2I는 assemble
/run
/save-artifacts
스크립트를 제공하는 다양한 옵션을 지원합니다. 이러한 위치는 모두 다음 순서에 따라 각 빌드에서 확인합니다.
- 빌드 구성에 지정된 스크립트입니다.
-
애플리케이션 소스
.s2i/bin
디렉터리에 있는 스크립트입니다. -
라벨이
io.openshift.s2i.scripts-url
인 기본 이미지 URL에 있는 스크립트입니다.
이미지에 지정된 io.openshift.s2i.scripts-url
라벨과 빌드 구성에 지정된 스크립트 모두 다음 양식 중 하나를 취할 수 있습니다.
-
image:///path_to_scripts_dir
: S2I 스크립트가 있는 디렉터리에 대한 이미지 내부의 절대 경로입니다. -
file:///path_to_scripts_dir
: S2I 스크립트가 있는 호스트의 디렉터리에 대한 상대 또는 절대 경로입니다. -
http(s)://path_to_scripts_dir
: S2I 스크립트가 있는 디렉터리에 대한 URL입니다.
스크립트 | 설명 |
---|---|
|
|
|
|
|
이러한 종속 항목은 |
|
|
|
참고
|
S2I 스크립트의 예
다음 예제 S2I 스크립트는 Bash로 작성됩니다. 각 예에서는 tar
콘텐츠가 /tmp/s2i
디렉터리에 압축 해제되어 있다고 가정합니다.
assemble
스크립트:
run
스크립트:
run the application
#!/bin/bash
# run the application
/opt/application/run.sh
save-artifacts
스크립트:
usage
스크립트:
5.2.6. 빌드 볼륨 사용 링크 복사링크가 클립보드에 복사되었습니다!
빌드 볼륨을 마운트하여 출력 컨테이너 이미지에 유지하려고 하지 않는 정보에 대한 액세스 권한을 실행 중인 빌드에 부여할 수 있습니다.
빌드 볼륨은 빌드 환경 또는 구성이 빌드 시에만 필요한 리포지토리 자격 증명과 같은 중요한 정보를 제공합니다. 빌드 볼륨은 출력 컨테이너 이미지에 데이터가 지속될 수 있는 빌드 입력과 다릅니다.
실행 중인 빌드 볼륨에서 데이터를 읽는 빌드 볼륨의 마운트 지점은 Pod 볼륨 마운트 와 기능적으로 유사합니다.
사전 요구 사항
- 입력 보안, 구성 맵 또는 둘 다를 BuildConfig 오브젝트에 추가했습니다.
프로세스
BuildConfig
오브젝트의sourceStrategy
정의에서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 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.