2.5. 기존 Maven 바이너리를 사용하여 OpenShift 애플리케이션용 JWS 생성
기존 Maven 바이너리를 사용하여 OpenShift용 JWS를 생성할 수 있습니다. oc start-build 명령을 사용하여 OpenShift에 기존 애플리케이션을 배포할 수 있습니다.
다음 절차에서는 tomcat-websocket-chat quickstart 예제를 기반으로 하는 예제 애플리케이션을 생성하는 방법을 보여줍니다.
사전 요구 사항
OpenShift용 JWS에 배포하려는 애플리케이션에 대해 기존
.war,.ear또는.jar파일이 있거나 로컬에서 애플리케이션을 빌드했습니다.예를 들어
tomcat-websocket-chat애플리케이션을 로컬로 빌드하려면 다음 단계를 수행합니다.소스 코드를 복제하려면 다음 명령을 입력합니다.
$ git clone https://github.com/web-servers/tomcat-websocket-chat-quickstart.gitRed Hat JBoss Middleware Maven 리포지토리 구성에 설명된 대로 Red Hat JBoss Middleware Maven 리포지토리를 구성합니다.
Maven 리포지토리에 대한 자세한 내용은 Red Hat JBoss Enerprise Maven Repository 웹 페이지를 참조하십시오.
애플리케이션을 빌드하려면 다음 명령을 입력합니다.
$ cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/ $ mvn clean package이전 명령은 다음 출력을 생성합니다.
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Tomcat websocket example 1.2.0.Final [INFO] ------------------------------------------------------------------------ ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:28 min [INFO] Finished at: 2018-01-16T15:59:16+10:00 [INFO] Final Memory: 19M/271M [INFO] ------------------------------------------------------------------------
프로세스
로컬 파일 시스템에서 바이너리 빌드용 소스 디렉터리와
배포하위 디렉터리를 생성합니다.예를 들어
tomcat-websocket-chat애플리케이션에 대한/ocp소스 디렉터리 및/deployments하위 디렉터리를 생성하려면 다음 명령을 입력합니다.$ cd tomcat-websocket-chat-quickstart/tomcat-websocket-chat/ $ mkdir -p ocp/deployments참고소스 디렉터리는 Maven 바이너리에 포함되지 않은 애플리케이션에 필요한 모든 콘텐츠를 포함할 수 있습니다. 자세한 내용은 JWS for OpenShift S2I process 를 참조하십시오.
.war,.ear또는.jar바이너리 파일을deployments하위 디렉터리에 복사합니다.예를 들어 예제 tomcat-websocket-chat 애플리케이션의
.war파일을 복사하려면 다음 명령을 입력합니다.$ cp target/websocket-chat.war ocp/deployments/참고이전 예에서
target/websocket-chat.war는 복사할 바이너리 파일의 경로입니다.소스 디렉터리의
배포하위 디렉터리에 있는 애플리케이션 아카이브는 OpenShift에 빌드되는 이미지의$JWS_HOME/tomcat/webapps/디렉터리에 복사됩니다. 애플리케이션이 성공적으로 배포될 수 있도록 하려면 웹 애플리케이션 데이터가 포함된 디렉터리 계층 구조가 올바르게 구성되어 있는지 확인해야 합니다. 자세한 내용은 JWS for OpenShift S2I process 를 참조하십시오.OpenShift 인스턴스에 로그인합니다.
$ oc login <url>필요한 경우 새 프로젝트를 생성합니다.
예를 들면 다음과 같습니다.
$ oc new-project jws-bin-demo참고이전 예에서
jws-bin-demo는 생성하려는 프로젝트의 이름입니다.애플리케이션에 사용할 OpenShift 이미지 스트림의 JWS를 식별합니다.
$ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '이전 명령은 다음 유형의 출력을 생성합니다.
jboss-webserver61-openjdk17-tomcat10-openshift-ubi8참고-n openshift옵션은 사용할 프로젝트를 지정합니다.oc get is -n openshift명령은openshift프로젝트에서 이미지 스트림 리소스를 가져옵니다.새 빌드 구성을 생성하고 이미지 스트림 및 애플리케이션 이름을 지정했는지 확인합니다.
예를 들어 예제 tomcat-websocket-chat 애플리케이션에 대한 새 빌드 구성을 생성하려면 다음을 수행합니다.
$ oc new-build --binary=true \ --image-stream=jboss-webserver61-openjdk17-tomcat10-openshift-ubi8:latest \ --name=jws-wsch-app참고이전 예에서
jws-wsch-app은 OpenShift용 JWS의 이름입니다.이전 명령은 다음 유형의 출력을 생성합니다.
--> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver61-tomcat10-openshift" under tag "latest" for "jboss-webserver61" JBoss Web Server 6.1 -------------------- Platform for building and running web applications on JBoss Web Server 6.1 - Tomcat v10 Tags: builder, java, tomcat10 * A source build using binary input will be created * The resulting image will be pushed to image stream "jws-wsch-app:latest" * A binary build was created, use 'start-build --from-dir' to trigger a new build --> Creating resources with label build=jws-wsch-app ... imagestream "jws-wsch-app" created buildconfig "jws-wsch-app" created --> Success바이너리 빌드를 시작합니다.
예를 들면 다음과 같습니다.
$ oc start-build jws-wsch-app --from-dir=./ocp --follow참고이전 예에서
jws-wsch-app은 OpenShift 애플리케이션의 JWS 이름이며ocp는 소스 디렉터리의 이름입니다.이전 명령은 OpenShift 이미지 빌드의 바이너리 입력을 위해 생성한 소스 디렉터리를 사용하도록 OpenShift에 지시합니다.
이전 명령은 다음 유형의 출력을 생성합니다.
Uploading directory "ocp" as binary input for the build ... build "jws-wsch-app-1" started Receiving source from STDIN as archive ... Copying all deployments war artifacts from /home/jboss/source/deployments directory into `/opt/jws-6.1/tomcat/webapps` for later deployment... '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/jws-6.1/tomcat/webapps/websocket-chat.war' Pushing image 172.30.202.111:5000/jws-bin-demo/jws-wsch-app:latest ... Pushed 0/7 layers, 7% complete Pushed 1/7 layers, 14% complete Pushed 2/7 layers, 29% complete Pushed 3/7 layers, 49% complete Pushed 4/7 layers, 62% complete Pushed 5/7 layers, 92% complete Pushed 6/7 layers, 100% complete Pushed 7/7 layers, 100% complete Push successful이미지를 기반으로 새 OpenShift 애플리케이션을 생성합니다.
예를 들면 다음과 같습니다.
$ oc new-app jws-wsch-app참고이전 예에서
jws-wsch-app은 OpenShift용 JWS의 이름입니다.이전 명령은 다음 유형의 출력을 생성합니다.
--> Found image e5f3a6b (About a minute old) in image stream "jws-bin-demo/jws-wsch-app" under tag "latest" for "jws-wsch-app" JBoss Web Server 6.1 -------------------- Platform for building and running web applications on JBoss Web Server 6.1 - Tomcat v10 Tags: builder, java, tomcat10 * This image will be deployed in deployment config "jws-wsch-app" * Ports 8080/tcp, 8443/tcp, 8778/tcp will be load balanced by service "jws-wsch-app" * Other containers can access this service through the hostname "jws-wsch-app" --> Creating resources ... deploymentconfig "jws-wsch-app" created service "jws-wsch-app" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/jws-wsch-app' Run 'oc status' to view your app.사용자가 애플리케이션에 액세스할 수 있도록 서비스를 노출합니다.
예를 들어 예제
jws-wsch-app애플리케이션에 액세스할 수 있도록 하려면 다음 단계를 수행합니다.노출할 서비스 이름을 확인합니다.
$ oc get svc -o name이전 명령은 다음 유형의 출력을 생성합니다.
service/jws-wsch-app서비스를 노출합니다.
$ oc expose svc/jws-wsch-app이전 명령은 다음 유형의 출력을 생성합니다.
route "jws-wsch-app" exposed
노출된 경로의 주소를 검색합니다.
oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app웹 브라우저를 열고 URL을 입력하여 애플리케이션에 액세스합니다.
예를 들어 예제
jws-wsch-app애플리케이션에 액세스하려면 다음 URL을 입력합니다.http://<address_of_exposed_route>/websocket-chat참고이전 예에서 <
address_of_exposed_route>를 배포에 적절한 값으로 바꿉니다.