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/web-servers/tomcat-websocket-chat-quickstart.gitRed Hat JBoss Middleware Maven リポジトリーの設定 で説明するように、Red Hat JBoss Middleware Maven リポジトリーを設定します。
Maven リポジトリーの詳細は、Red Hat JBoss Enerprise Maven リポジトリー の Web ページを参照してください。
アプリケーションをビルドするには、以下のコマンドを入力します。
$ 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] ------------------------------------------------------------------------
手順
ローカルファイルシステムで、バイナリービルド用のソースディレクトリーと
deploymentsサブディレクトリーを作成します。たとえば、
tomcat-websocket-chatアプリケーション用に/ocpソースディレクトリーと/deploymentsサブディレクトリーを作成するには、次のコマンドを入力します。$ cd tomcat-websocket-chat-quickstart/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-webserver60-openjdk17-tomcat10-openshift-ubi8注記-n openshiftオプションは、使用するプロジェクトを指定します。oc get is -n openshiftコマンドは、openshiftプロジェクトからイメージストリームリソースを取得します。新しいビルド設定を作成し、イメージストリームとアプリケーション名を指定していることを確認します。
たとえば、サンプル tomcat-websocket-chat アプリケーションの新しいビルド設定を作成するには、次のようにします。
$ oc new-build --binary=true \ --image-stream=jboss-webserver60-openjdk17-tomcat10-openshift-ubi8:latest \ --name=jws-wsch-app注記上記の例では、
jws-wsch-appが JWS for OpenShift アプリケーションの名前です。上記のコマンドは、次のタイプの出力を生成します。
--> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver60-tomcat10-openshift" under tag "latest" for "jboss-webserver60" JBoss Web Server 6.0 -------------------- Platform for building and running web applications on JBoss Web Server 6.0 - 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は 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-6.0/tomcat/webapps` for later deployment... '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/jws-6.0/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 6.0 -------------------- Platform for building and running web applications on JBoss Web Server 6.0 - 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-appWeb ブラウザーを開き、URL を入力してアプリケーションにアクセスします。
たとえば、サンプル
jws-wsch-appアプリケーションにアクセスするには、次の URL を入力します。http://<address_of_exposed_route>/websocket-chat注記前の例で、
<address_of_exposed_route>をデプロイメントに適した値に置き換えます。