2.9.2. 이미지에서 Scripts embedded 호출
일반적으로 빌더 이미지는 가장 일반적인 사용 사례를 포함하는 자체 버전의 S2I 스크립트를 제공합니다. 이러한 스크립트가 요구 사항을 충족하지 않으면 S2I는 .s2i/bin 디렉터리에 사용자 지정 항목을 추가하여 덮어쓰는 방법을 제공합니다. 그러나 이렇게 하면 표준 스크립트를 완전히 교체할 수 있습니다. 경우에 따라 이 방법이 허용되지만 다른 시나리오에서는 이미지에 제공된 스크립트의 논리를 유지하면서 스크립트 이전에(또는 이후) 몇 가지 명령을 실행하는 것을 선호할 수 있습니다. 이 경우 사용자 정의 논리를 실행하고 이미지의 기본 스크립트로 추가 작업을 위임하는 래퍼 스크립트를 생성할 수 있습니다.
빌더 이미지 내부의 스크립트 위치를 확인하려면 io.openshift.s2i.scripts-url
레이블의 값을 확인합니다. docker inspect
를 사용하십시오:
$ docker inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' openshift/wildfly-100-centos7 image:///usr/libexec/s2i
openshift/wildfly-100-centos7 빌더 이미지를 검사하고 스크립트가 /usr/libexec/s2i 디렉터리에 있음을 확인합니다.
이 지식을 사용하여 호출을 래핑하여 자체 스크립트를 모두 호출합니다.
예 2.1. .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
를 사용하면 기본 이미지 실행 스크립트를 호출한 후 추가 명령을 실행할 수 없습니다.
예 2.2. .s2i/bin/run script
#!/bin/bash echo "Before running application" exec /usr/libexec/s2i/run