11.11. S2I


이미지에는 S2I 스크립트와 Maven이 포함됩니다. Maven은 현재 OpenShift의 JBoss EAP 기반 컨테이너(또는 관련/하위 이미지)에 배포되어야 하는 애플리케이션의 빌드 도구로만 지원됩니다.

현재 WAR 배포만 지원됩니다.

11.11.1. 사용자 정의 설정

이미지에 대한 사용자 지정 구성 파일을 추가할 수 있습니다. configuration/ 디렉토리에 배치된 모든 파일이 EAP_HOME/standalone/configuration/ 에 복사됩니다. 예를 들어 이미지에 사용되는 기본 구성을 재정의하려면 사용자 지정 standalone.xmlconfiguration/ 디렉터리에 추가하기만 하면 됩니다. 이러한 배포 예제는 예제를 참조하십시오.

11.11.1.1. 사용자 정의 모듈

사용자 지정 모듈을 추가할 수 있습니다. modules/ 디렉터리의 모든 파일이 EAP_HOME/modules/ 에 복사됩니다. 이러한 배포 예제는 예제를 참조하십시오.

11.11.2. 배포 Artifacts

기본적으로 소스 대상 디렉터리의 아티팩트가 배포됩니다. 다른 디렉터리에서 배포하려면 BuildConfig 정의에 ARTIFACT_DIR 환경 변수를 설정합니다. ARTIFACT_DIR 은 쉼표로 구분된 목록입니다. 예: ARTIFACT_DIR=app1/target,app2/target,app3/target

11.11.3. 아티팩트 저장소 미러

Maven의 리포지토리에는 다양한 유형의 빌드 아티팩트 및 종속성(예: 모든 프로젝트 JAR, 라이브러리 JAR, 플러그인 또는 기타 프로젝트별 아티팩트)이 있습니다. S2I 빌드를 수행하는 동안 아티팩트를 다운로드할 위치도 지정합니다. 중앙 리포지토리를 사용하는 것 외에도 조직에서 로컬 사용자 정의 미러 저장소를 배포하는 것이 일반적인 방법입니다.

미러를 사용하면 다음과 같은 이점이 있습니다.

  • 동기화된 미러의 가용성은 지리적으로 더 빠르고 빠릅니다.
  • 리포지토리 콘텐츠를 보다 효과적으로 제어할 수 있는 기능.
  • 공용 서버 및 리포지토리에 의존할 필요 없이 다양한 팀(개발자, CI)에서 아티팩트를 공유할 수 있습니다.
  • 빌드 시간이 개선되었습니다.

종종 저장소 관리자는 미러에 대한 로컬 캐시 역할을 할 수 있습니다. 리포지토리 관리자가 이미 배포되어 https://10.0.0.1:8443/repository/internal/ 에서 외부에서 연결할 수 있다고 가정하면 S2I 빌드는 다음과 같이 애플리케이션의 빌드 구성에 MAVEN_MIRROR_URL 환경 변수를 제공하여 이 관리자를 사용할 수 있습니다.

  1. MAVEN_MIRROR_URL 변수를 적용할 빌드 구성의 이름을 식별합니다.

    oc get bc -o name
    buildconfig/eap
  2. MAVEN_MIRROR_URL 환경 변수를 사용하여 build 구성을 업데이트합니다.

    oc env bc/eap MAVEN_MIRROR_URL="https://10.0.0.1:8443/repository/internal/"
    buildconfig "eap" updated
  3. 설정을 확인합니다.

    oc env bc/eap --list
    # buildconfigs eap
    MAVEN_MIRROR_URL=https://10.0.0.1:8443/repository/internal/
  4. 애플리케이션의 새 빌드를 예약합니다.
참고

애플리케이션 빌드 중에 Maven 종속성은 기본 공용 리포지토리가 아니라 리포지토리 관리자에서 가져옵니다. 또한 빌드가 완료되면 빌드 중에 검색 및 사용된 모든 종속 항목으로 미러가 채워집니다.

11.11.3.1. 보안 아티팩트 저장소 미러 URL

Maven 리포지토리를 통해 "man-in-the-middle" 공격을 방지하려면 JBoss EAP에서 아티팩트 리포지토리 미러 URL에 대한 보안 URL을 사용해야 합니다.

URL은 보안 http("https") 및 보안 포트를 지정해야 합니다.

기본적으로 비보안 URL을 지정하면 오류가 반환됩니다. -Dinsecure.repositories=WARN 속성을 사용하여 이 동작을 재정의할 수 있습니다.

11.11.4. 스크립트

run
이 스크립트는 standalone.xml 구성으로 JBoss EAP를 구성하고 시작하는 openshift-launch.sh 스크립트를 사용합니다.
assemble
이 스크립트는 Maven을 사용하여 소스를 빌드하고 패키지(WAR)를 생성한 다음 EAP_HOME/standalone/deployments 디렉터리로 이동합니다.

11.11.5. 사용자 지정 스크립트

JBoss EAP가 시작되기 전에 포드를 시작할 때 실행할 사용자 지정 스크립트를 추가할 수 있습니다.

CLI 스크립트를 포함하여 Pod를 시작할 때 실행할 유효한 스크립트를 추가할 수 있습니다.

이미지에서 JBoss EAP를 시작할 때 스크립트를 포함하여 두 가지 옵션을 사용할 수 있습니다.

  • postconfigure.sh로 실행할 configmap을 마운트합니다.
  • nominated 설치 디렉터리에 install.sh 스크립트를 추가합니다.

11.11.5.1. 사용자 정의 스크립트를 실행하기 위한 configmap 마운트

런타임 시 사용자 지정 스크립트를 기존 이미지(즉, 이미 빌드된 이미지)에 마운트하려는 경우 configmap을 마운트합니다.

configmap을 마운트하려면 다음을 수행합니다.

  1. postconfigure.sh에 포함할 콘텐츠로 configmap을 생성합니다.

    예를 들어 프로젝트 루트 디렉터리에 확장 이라는 디렉터리를 생성하여 postconfigure.shextensions.cli 스크립트를 포함하고 다음 명령을 실행합니다.

    $ oc create configmap jboss-cli --from-file=postconfigure.sh=extensions/postconfigure.sh --from-file=extensions.cli=extensions/extensions.cli
  2. 배포 컨트롤러(dc)를 통해 configmap을 Pod에 마운트합니다.

    $ oc set volume dc/eap-app --add --name=jboss-cli -m /opt/server/extensions -t configmap --configmap-name=jboss-cli --default-mode='0755' --overwrite

postconfigure.sh

#!/usr/bin/env bash
set -x
echo "Executing postconfigure.sh"
$JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/extensions.cli

extensions.cli의 예

embed-server --std-out=echo  --server-config=standalone.xml
:whoami
quit

11.11.5.2. install.sh를 사용하여 사용자 지정 스크립트 실행

빌드 시 스크립트를 이미지의 일부로 포함하려면 install.sh를 사용합니다.

install.sh를 사용하여 사용자 정의 스크립트를 실행하려면 다음을 수행합니다.

  1. s2i 빌드 중에 사용할 프로젝트의 git 리포지토리에서 .s2i 라는 디렉터리를 생성합니다.
  2. s2i 디렉터리 내에서 다음 콘텐츠를 사용하여 environment라는 파일을 추가합니다.

    $ cat .s2i/environment
    CUSTOM_INSTALL_DIRECTORIES=extensions
  3. extensions 이라는 디렉터리를 만듭니다.
  4. extensions 디렉토리에서 다음과 유사한 콘텐츠를 사용하여 postconfigure.sh 파일을 만듭니다(사용자 환경에 적합한 코드로 자리 표시자 코드를 교체).

    $ cat extensions/postconfigure.sh
    #!/usr/bin/env bash
    echo "Executing patch.cli"
    $JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/extensions/some-cli-example.cli
  5. extensions 디렉토리에서 다음과 유사한 내용으로 파일 install.sh를 만듭니다 ( 자리 표시자 코드를 환경에 적합한 코드로 교체).

    $ cat extensions/install.sh
    #!/usr/bin/env bash
    set -x
    echo "Running $PWD/install.sh"
    injected_dir=$1
    # copy any needed files into the target build.
    cp -rf ${injected_dir} $JBOSS_HOME/extensions

11.11.6. 환경 변수

환경 변수를 s2i build 명령에 제공하여 빌드 실행 방식에 영향을 미칠 수 있습니다. 제공할 수 있는 환경 변수는 다음과 같습니다.

Expand
표 11.7. s2i 환경 변수
변수 이름설명

ARTIFACT_DIR

이 디렉터리의 .war,.ear .jar 파일이 deployments/ 디렉터리에 복사됩니다.

예제 값: target

ENABLE_GENERATE_DEFAULT_DATASOURCE

선택 사항: 값이 true 인 경우 서버는 기본 데이터 소스를 사용하여 프로비저닝됩니다. 그렇지 않으면 기본 데이터 소스가 포함되지 않습니다.

GALLEON_PROVISION_LAYERS

선택 사항: 지정된 계층을 프로비저닝하도록 S2I 프로세스에 지시합니다. 값은 하나의 기본 계층과 임의의 수의 데코레이터 계층을 포함하여 프로비저닝할 쉼표로 구분된 계층 목록입니다.

예제 값: jaxrs

GALLEON_PROVISION_CHANNELS

이는 쉼표로 구분된 JBoss EAP 채널 매니페스트 목록입니다. JBoss EAP 채널 매니페스트는 groupid:artifactId:[version] 로 식별됩니다.

참고

버전은 선택 사항이므로 최신 채널 매니페스트가 검색됩니다. JBoss EAP 8.0의 경우 이 채널 org.jboss.eap.channels:eap-8.0 을 사용합니다.

GALLEON_PROVISION_FEATURE_PACKS

환경 변수를 빌드하여 S2I 이미지의 사용자 지정 Galleon 기능 팩을 지정합니다. 예: org.jboss.eap:wildfly-ee-galleon-pack:[version],org.jboss.eap.cloud:eap-cloud-galleon-pack:[version].

참고

GALLEON_PROVISION_CHANNELS=org.jboss.eap.channels:eap-8.0 을 설정하면 기능 팩 버전이 필요하지 않습니다.

HTTP_PROXY_HOST

Maven을 사용할 HTTP 프록시의 호스트 이름 또는 IP 주소입니다.

예제 값: 192.168.1.1

HTTP_PROXY_PORT

Maven에서 사용할 HTTP 프록시의 TCP 포트입니다.

값 예: 8080

HTTP_PROXY_USERNAME

HTTP_PROXY_PASSWORD 와 함께 제공된 경우 HTTP 프록시에 대한 인증 정보를 사용합니다.

예제 값: myusername

HTTP_PROXY_PASSWORD

HTTP_PROXY_USERNAME 과 함께 제공된 경우 HTTP 프록시에 대한 인증 정보를 사용합니다.

예제 값: mypassword

HTTP_PROXY_NONPROXYHOSTS

제공된 경우 구성된 HTTP 프록시는 이러한 호스트를 무시합니다.

예제 값: some.example.org|*.example.net

MAVEN_ARGS

빌드 중에 Maven에 제공된 인수를 재정의합니다.

예: -e -Popenshift -DskipTests -Dcom.redhat.xpaas.repo.redhatga 패키지

MAVEN_ARGS_APPEND

빌드 중에 Maven에 제공된 사용자 인수를 추가합니다.

예제 값: -Dfoo=bar

MAVEN_MIRROR_URL

구성할 Maven 미러/repository 관리자의 URL입니다.

예제 값: https://10.0.0.1:8443/repository/internal/

지정된 URL은 안전해야 합니다. 자세한 내용은 Secure artifact repository 미러 URL을 참조하십시오.

MAVEN_CLEAR_REPO

선택적으로 빌드 후 로컬 Maven 리포지토리를 지웁니다.

이미지에 있는 서버가 로컬 캐시에 강하게 연결된 경우 캐시가 삭제되지 않고 경고가 출력됩니다.

예제 value: true

APP_DATADIR

정의된 경우 데이터 파일이 복사되는 소스의 디렉터리입니다.

예제 값: mydata

DATA_DIR

$APP_DATADIR 의 데이터가 복사되는 이미지의 디렉터리입니다.

예시 값: EAP_HOME/data

참고
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동