検索

3.4. OpenShift Source-to-Image (S2I) プロセスでの JWS の使用

download PDF

JWS for OpenShift イメージを実行および設定するには、アプリケーションテンプレートパラメーターおよび環境変数を使用して OpenShift S2I プロセスを使用します。

JWS for OpenShift イメージの S2I プロセスは以下のようになります。

  • configuration/ Maven settings.xml ファイルがある場合は、新しいイメージの $HOME/.m2/ に移動します。

    Maven および Maven の settings.xml ファイルの詳細は、Apache Maven Project の Web サイト を参照してください。

  • ソースリポジトリーに pom.xml ファイルがある場合、$MAVEN_ARGS 環境変数の内容を使用して Maven ビルドがトリガーされます。

    デフォルトでは、package のゴールは openshift プロファイルで使用されます。これには、テストをスキップする引数 (-DskipTests) および Red Hat GA リポジトリーを有効にするための引数 (-Dcom.redhat.xpaas.repo.redhatga) が含まれます。

  • 成功した Maven ビルドの結果は /opt/webserver/webapps/ にコピーされます。これには、$ARTIFACT_DIR 環境変数によって指定されたソースディレクトリーからの WAR ファイルがすべて含まれます。$ARTIFACT_DIR のデフォルト値は target/ ディレクトリーです。

    MAVEN_ARGS_APPEND 環境変数を使用して Maven 引数を変更します。

  • deployments/ ソースディレクトリーのすべての WAR ファイルが /opt/webserver/webapps/ にコピーされます。
  • configuration/ ソースディレクトリーのすべてのファイルは、/opt/webserver/conf/ にコピーされます (Maven の settings.xml ファイルを除く)。
  • lib/ ソースディレクトリーのすべてのファイルは /opt/webserver/lib/ にコピーされます。

    注記

    カスタムの Tomcat 設定ファイルを使用する場合は、通常の Tomcat インストールと同じファイル名を使用する必要があります。例: context.xml および server.xml

S2I プロセスを設定してカスタム Maven アーティファクトリーポジトリーミラー を使用する方法は、アーティファクトリーポジトリーミラー の項を参照してください。

3.4.1. 既存の Maven バイナリーを使用した OpenShift アプリケーションの JWS の作成

既存のアプリケーションは oc start-build コマンドを使用して OpenShift にデプロイされます。

前提条件: OpenShift 用の JWS にデプロイする既存の .war.ear、または .jar アプリケーション。

  1. ローカルファイルシステムでディレクトリー構造を準備します。

    アプリケーションが必要とするコンテンツがバイナリーに含まれていないコンテンツを含むソースディレクトリーを作成します。必要に応じて、Using the JWS for OpenShift Source-to-Image(S2I) プロセス を参照してください。次に、deployments/ サブディレクトリーを作成します。

    $ mkdir -p <build_dir>/deployments
  2. バイナリー (.war,.ear,.jar) を deployments/ にコピーします。

    $ cp /path/to/binary/<filenames_with_extensions> <build_dir>/deployments/
    注記

    ソースディレクトリーの deployments/ サブディレクトリーにあるアプリケーションアーカイブは、OpenShift 上にビルドされているイメージの $JWS_HOME/tomcat/webapps/ ディレクトリーにコピーされます。アプリケーションをデプロイするには、web アプリケーションデータが含まれるディレクトリー階層が正しく設定される必要があります (「OpenShift Source-to-Image (S2I) プロセスでの JWS の使用」 を参照)。

  3. OpenShift インスタンスにログインします。

    $ oc login <url>
  4. 必要に応じて新規プロジェクトを作成します。

    $ oc new-project <project-name>
  5. oc get is -n openshift でアプリケーションに使用する OpenShift イメージストリームの JWS を特定します。

    $ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
    
    jboss-webserver50-tomcat9-openshift
    注記

    オプション -n openshift は使用するプロジェクトを指定します。oc get is -n openshiftopenshift プロジェクトからイメージストリームリソース (is) を取得 (get) します。

  6. イメージストリームおよびアプリケーション名を指定して、新規ビルド設定を作成します。

    $ oc new-build --binary=true \
     --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7:latest \
    --name=<my-jws-on-openshift-app>
  7. OpenShift イメージビルドのバイナリー入力用に上記で作成されたソースディレクトリーを使用するように OpenShift に指示します。

    $ oc start-build <my-jws-on-openshift-app> --from-dir=./<build_dir> --follow
  8. イメージに基づいて新しい OpenShift アプリケーションを作成します。

    $ oc new-app <my-jws-on-openshift-app>
  9. サービスを公開して、アプリケーションがユーザーにアクセスできるようにします。

    # to check the name of the service to expose
    $ oc get svc -o name
    
    service/<my-jws-on-openshift-app>
    
    # to expose the service
    $ oc expose svc/my-jws-on-openshift-app
    
    route "my-jws-on-openshift-app" exposed
  10. 公開されたルートのアドレスを取得します。

    oc get routes --no-headers -o custom-columns='host:spec.host' my-jws-on-openshift-app
  11. ブラウザーでアプリケーションにアクセスするには http://<address_of_exposed_route> / <my-war-ear-jar-filename-without-extension> を入力します。

3.4.2. 例: 既存の Maven バイナリーを使用した OpenShift アプリケーションの JWS の作成

以下の例では、「既存の Maven バイナリーを使用した OpenShift アプリケーションの JWS の作成」 の手順を使用して tomcat-websocket-chat クイックスタートを使用します。

3.4.2.1. 要件:

  1. WAR アプリケーションアーカイブを取得したり、アプリケーションをローカルにビルドしたりします。

    • ソースコードのクローンを作成します。

      $ git clone https://github.com/jboss-openshift/openshift-quickstarts.git
    • Configure the Red Hat JBoss Middleware Maven Repository

    • アプリケーションをビルドします。

      $ 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] ------------------------------------------------------------------------
  1. ローカルファイルシステムでディレクトリー構造を準備します。

    バイナリービルドのソースディレクトリーを、ローカルファイルシステムと deployments/ サブディレクトリーに作成します。WAR アーカイブを deployments/ にコピーします。

    [tomcat-websocket-chat]$ ls
    
    pom.xml  README.md  src/  target/
    $ mkdir -p ocp/deployments
    $ cp target/websocket-chat.war ocp/deployments/

3.4.2.2. OpenShift でサンプルアプリケーションを設定する方法

  1. OpenShift インスタンスにログインします。

    $ oc login <url>
  2. 必要に応じて新規プロジェクトを作成します。

    $ oc new-project jws-bin-demo
  3. oc get is -n openshift でアプリケーションに使用する OpenShift イメージストリームの JWS を特定します。

    $ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
    
    jboss-webserver50-tomcat9-openshift
  4. イメージストリームおよびアプリケーション名を指定して、新規ビルド設定を作成します。

    $ oc new-build --binary=true \
     --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7:latest\
     --name=jws-wsch-app
    
    --> Found image 8c3b85b (4 weeks old) in image stream "openshift/jboss-webserver<version>-tomcat9-openshift" under tag "latest" for "jboss-webserver<version>"
    
        JBoss Web Server 5.0
        --------------------
        Platform for building and running web applications on JBoss Web Server 5.0 - 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
  5. バイナリービルドを開始します。OpenShift イメージビルドのバイナリー入力にソースディレクトリーを使用するように OpenShift に指示します。

    $ *oc start-build jws-wsch-app --from-dir=./ocp --follow*
    
    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.4/tomcat/webapps` for later deployment...
    '/home/jboss/source/deployments/websocket-chat.war' -> '/opt/jws-5.4/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
  6. イメージに基づいて新しい OpenShift アプリケーションを作成します。

    $ oc new-app jws-wsch-app
    
    --> 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.0
        --------------------
        Platform for building and running web applications on JBoss Web Server 5.0 - 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.
  7. サービスを公開して、アプリケーションがユーザーにアクセスできるようにします。

    # to check the name of the service to expose
    $ oc get svc -o name
    
    service/jws-wsch-app
    
    # to expose the service
    $ oc expose svc/jws-wsch-app
    
    route "jws-wsch-app" exposed
  8. 公開されたルートのアドレスを取得します。

    oc get routes --no-headers -o custom-columns='host:spec.host' jws-wsch-app
  9. ブラウザーでアプリケーションにアクセスします: http://<address_of_exposed_route>/websocket-chat

3.4.3. ソースコードから JWS for OpenShift アプリケーションを作成します。

ソースコードから新しい OpenShift アプリケーションを作成する詳細な手順は、OpenShift.com - ソースコードからのアプリケーションの作成 を参照してください。

注記

次に進む前に、アプリケーションのデータが正しく構造化されていることを確認します (「OpenShift Source-to-Image (S2I) プロセスでの JWS の使用」 を参照)。

  1. OpenShift インスタンスにログインします。

    $ oc login <url>
  2. 必要に応じて新規プロジェクトを作成します。

    $ oc new-project <project-name>
  3. oc get is -n openshift でアプリケーションに使用する OpenShift イメージストリームの JWS を特定します。

    $ oc get is -n openshift | grep ^jboss-webserver | cut -f1 -d ' '
    
    jboss-webserver50-tomcat9-openshift
  4. Red Hat JBoss Web Server for OpenShift イメージを使用して、ソースコードから新しい OpenShift アプリケーションを作成し、--image-stream オプションを使用します。

    $ oc new-app \
     <source_code_location>\
     --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7\
     --name=<openshift_application_name>

    例を以下に示します。

    $ oc new-app \
     https://github.com/jboss-openshift/openshift-quickstarts.git#master \
     --image-stream=jboss-webserver<version>-openjdk8-tomcat9-openshift-rhel7\
     --context-dir='tomcat-websocket-chat' \
     --name=jws-wsch-app

    ソースコードがイメージに追加され、ソースコードがコンパイルされます。ビルド設定とサービスも作成されます。

  5. アプリケーションを公開するには、以下を実行します。

    # to check the name of the service to expose
    $ oc get svc -o name
    
    service/<openshift_application_name>
    
    # to expose the service
    $ oc expose svc/<openshift_application_name>
    
    route "<openshift_application_name>" exposed
  6. 公開されたルートのアドレスを取得するには、以下を実行します。

    oc get routes --no-headers -o custom-columns='host:spec.host' <openshift_application_name>
  7. ブラウザーでアプリケーションにアクセスします: http://<address_of_exposed_route>/<java_application_name>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.