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
스크립트를 제공합니다. 스크립트가 포함된 디렉터리의 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
오브젝트의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 드라이버는 기술 프리뷰 기능으로 지원됩니다.