2.5. 既存の Maven バイナリーを使用した OpenShift アプリケーションの JWS の作成
既存の Maven バイナリーを使用して、OpenShift アプリケーション用の JWS を作成できます。oc start-build
コマンドを使用して、既存のアプリケーションを OpenShift にデプロイできます。
この手順では、tomcat-websocket-chat クイックスタートの例に基づいたサンプルアプリケーションを作成する方法を示します。
前提条件
JWS for OpenShift にデプロイするアプリケーション用の既存の
.war
、.ear
、または.jar
ファイルがあるか、アプリケーションをローカルでビルドしている。たとえば、
tomcat-websocket-chat
アプリケーションをローカルでビルドするには、次の手順を実行します。ソースコードを複製するには、次のコマンドを入力します。
$ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
Red Hat JBoss Middleware Maven リポジトリーの設定 で説明するように、Red HatJBoss Middleware Maven リポジトリーを設定します。
Maven リポジトリーの詳細については、Red Hat JBoss Enerprise Maven リポジトリー の Web ページを参照してください。
アプリケーションをビルドするには、以下のコマンドを入力します。
$ cd openshift-quickstarts/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] ------------------------------------------------------------------------
手順
ローカルファイルシステムで、バイナリービルド用のソースディレクトリーと
deployments
サブディレクトリーを作成します。たとえば、
tomcat-websocket-chat
アプリケーション用に/ocp
ソースディレクトリーと/deployments
サブディレクトリーを作成するには、次のコマンドを入力します。$ cd openshift-quickstarts/tomcat-websocket-chat/ $ mkdir -p ocp/deployments
注記ソースディレクトリーには、Maven バイナリーに含まれていないアプリケーションで必要なコンテンツを含めることができます。詳細は、OpenShift S2I プロセスの JWS を参照してください。
.war
、.ear
、または.jar
バイナリーファイルをdeployments
サブディレクトリーにコピーします。たとえば、サンプル tomcat-websocket-chat アプリケーションの
.war
ファイルをコピーするには、次のコマンドを入力します。$ cp target/websocket-chat.war ocp/deployments/
注記上記の例では、
target/websocket-chat.war
が、コピーするバイナリーファイルへのパスです。ソースディレクトリーの
deployments
サブディレクトリーにあるアプリケーションアーカイブは、OpenShift 上にビルドされているイメージの$JWS_HOME/tomcat/webapps/
ディレクトリーにコピーされます。アプリケーションを正常にデプロイできるようにするには、Web アプリケーションデータを含むディレクトリー階層が正しく構造化されていることを確認する必要があります。詳細は、OpenShift S2I プロセスの JWS を参照してください。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-webserver56-openjdk8-tomcat9-openshift-ubi8
注記-n openshift
オプションは、使用するプロジェクトを指定します。oc get is -n openshift
コマンドは、openshift
プロジェクトからイメージストリームリソースを取得します。新しいビルド設定を作成し、イメージストリームとアプリケーション名を指定していることを確認します。
たとえば、サンプル tomcat-websocket-chat アプリケーションの新しいビルド設定を作成するには、次のようにします。
$ oc new-build --binary=true \ --image-stream=jboss-webserver56-openjdk8-tomcat9-openshift-ubi8:latest\* --name=jws-wsch-app
注記上記の例では、
jws-wsch-app
が JWS for OpenShift アプリケーションの名前です。上記のコマンドは、次のタイプの出力を生成します。
--> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver56-tomcat9-openshift" under tag "latest" for "jboss-webserver56" JBoss Web Server 5.6 -------------------- Platform for building and running web applications on JBoss Web Server 5.6 - Tomcat v9 Tags: builder, java, tomcat9 * 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
は JWS for OpenShift アプリケーションの名前であり、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-5.6/tomcat/webapps` for later deployment... '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/jws-5.6/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
が JWS for OpenShift アプリケーションの名前です。上記のコマンドは、次のタイプの出力を生成します。
--> 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 5.6 -------------------- Platform for building and running web applications on JBoss Web Server 5.6 - Tomcat v9 Tags: builder, java, tomcat9 * 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
Web ブラウザーを開き、URL を入力してアプリケーションにアクセスします。
たとえば、サンプル
jws-wsch-app
アプリケーションにアクセスするには、次の URL を入力します。\http://<address_of_exposed_route>/websocket-chat
注記前の例で、
<address_of_exposed_route>
をデプロイメントに適した値に置き換えます。
関連情報
-
oc start-build
コマンド