12.5. S2I(Source-to-Image) 이미지 사용자 정의

S2I(Source-to-Image) 빌더 이미지에는 assemble 및 run 스크립트가 포함되어 있지만 해당 스크립트의 기본 동작은 모든 사용자에게 적합하지 않습니다. 기본 스크립트가 포함된 S2I 빌더의 동작을 사용자 지정할 수 있습니다.

12.5.1. 이미지에 포함된 스크립트 호출

빌더 이미지는 가장 일반적인 사용 사례를 포함하는 자체 버전의 S2I(Source-to-Image) 스크립트를 제공합니다. 이러한 스크립트가 요구 사항을 충족하지 않으면 S2I는 .s2i/bin 디렉터리에 사용자 지정 설정을 추가하여 덮어쓰는 방법을 제공합니다. 하지만 이렇게 하면 표준 스크립트를 완전히 교체할 수 있습니다. 스크립트 교체가 허용되는 경우도 있지만 다른 시나리오에서는 이미지에 제공된 스크립트의 논리를 유지하면서 스크립트 전 또는 후에 몇 명령을 실행할 수 있습니다. 표준 스크립트를 재사용하려면 사용자 정의 논리를 실행하고 이미지의 기본 스크립트로 추가 작업을 위임하는 래퍼 스크립트를 생성할 수 있습니다.

절차

  1. io.openshift.s2i.scripts-url 레이블의 값을 보고 빌더 이미지 내부의 스크립트 위치를 확인합니다.

    $ podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7

    출력 예

    image:///usr/libexec/s2i

    wildfly/wildfly-centos7 빌더 이미지를 검사하고 스크립트가 /usr/libexec/s2i 디렉터리에 있음을 확인합니다.

  2. 다른 명령으로 래핑된 표준 스크립트 중 하나를 호출하는 스크립트를 생성합니다.

    .s2i/bin/assemble 스크립트

    #!/bin/bash
    echo "Before assembling"
    
    /usr/libexec/s2i/assemble
    rc=$?
    
    if [ $rc -eq 0 ]; then
        echo "After successful assembling"
    else
        echo "After failed assembling"
    fi
    
    exit $rc

    이 예에서는 메시지를 출력하고, 이미지에서 표준 assemble 스크립트를 실행하는 사용자 정의 assemble 스크립트를 보여주고 assemble 스크립트의 종료 코드에 따라 다른 메시지를 출력합니다.

    중요

    run 스크립트를 래핑할 때 exec를 사용하여 신호가 올바르게 처리되는지 확인해야 합니다. exec를 사용하면 기본 이미지 실행 스크립트를 호출한 후 추가 명령을 실행할 수 없습니다.

    .s2i/bin/run 스크립트

    #!/bin/bash
    echo "Before running application"
    exec /usr/libexec/s2i/run