LoginSignup
3
1

More than 1 year has passed since last update.

IBM Cloud® Code Engine に超シンプルなJava WARアプリをibmcloud CLIからデプロイする

Last updated at Posted at 2022-11-02

概要

  1. WAR を作成
  2. Dockerfile を作成する
  3. Code Engine にデプロイする

WAR の準備

サンプルとしてこんなWebアプリを用意しておきます。
今回はJSPを配置しただけのものです。

image.png

index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
	<h1><%=new java.util.Date()%></h1>
	<ol>
		<li>OK</li>
	</ol>
</body>
</html>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>hello-maven-webapp</groupId>
	<artifactId>hello-maven-webapp</artifactId>
	<version>1.0.0.0</version>
	<packaging>war</packaging>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.9.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>3.3.2</version>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
</project>

mvn package コマンドでビルドすると target ディレクトリに hello-maven-webapp-1.0.0.0.war が生成されます。

Docker Build の準備

適当なフォルダ(例:hello-ibm-codeengine-tomcat)を作成して、そこに作成済みのWAR(例:hello-maven-webapp-1.0.0.0.war)をコピーしてください。また空のテキストファイルとして Dockerfile を作成し、以下のように編集してください。

ベースとなるTomcatは8.5にしておりますが、お好みのバージョンやリリースで作ってください。

image.png

Dockerfile
FROM tomcat:8.5-jdk15-openjdk-slim 
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
WORKDIR ${CATALINA_HOME}
COPY hello-maven-webapp-1.0.0.0.war webapps/hello-maven-webapp-1.0.0.0.war

Code Engine の準備

プロジェクトを作成しておきます。
ここでは「demoapp」という名前でプロジェクトを作成してあります。
一つのプロジェクトに対し、複数のアプリケーションをデプロイすることができます。

image.png

Code Engine CLI の操作

前提

IBM Cloud CLI (ibmcloudコマンド) を事前に準備しておく必要があります

Getting started with the IBM Cloud CLI
https://cloud.ibm.com/docs/cli?locale=ja

Installing the stand-alone IBM Cloud CLI
https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli&locale=ja

→ インストーラーはこちら https://github.com/IBM-Cloud/ibm-cloud-cli-release/releases/

image.png

Code Engine CLI プラグインもインストールしておきます

Code Engine CLI プラグインのインストール
https://cloud.ibm.com/docs/codeengine?topic=codeengine-install-cli#install-cli-plugin

→ Code Engine CLI プラグインのインストールコマンドはこちら

$ ibmcloud plugin install code-engine

CLIからログイン

>ibmcloud login

SSO が適用されている場合は --sso オプションを付けます

> ibmcloud login --sso

複数の組織に紐づいている場合、「ターゲット」を選択します。

>ibmcloud login --sso
API エンドポイント: https://cloud.ibm.com
リージョン: jp-tok

https://xxx.xxx.iam.cloud.ibm.com/identity/passcode からワンタイム・コードを取得して、続行します。
デフォルトのブラウザーで URL を開きますか? [Y/n] > Y
ワンタイム・コード >
認証中です...
OK

アカウントを選択:
1. XXX (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)
2. YYY (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) <-> 2222222
3. ZZZ (cccccccccccccccccccccccccccccccc) <-> 3333333
数値を入力してください> 3
ターゲットのアカウント ZZZ <-> 3333333


API エンドポイント:      https://cloud.ibm.com
Region:                  jp-tok
ユーザー:                xxx@xxx.com
アカウント:              ZZZ (cccccccccccccccccccccccccccccccc) <-> 3333333
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用して ください
CF API エンドポイント:
組織:
スペース:

ターゲットリソースの指定

>ibmcloud target -g default

↑のコマンドを実行しておかないと「ターゲットになっているリソース・グループがありません。'ibmcloud target -g RESOURCE_GROUP_NAME' を実行してください。」と叱られます。

プロジェクトのLIST

Code Engine のWeb画面で作っておいたプロジェクトを表示します。

>ibmcloud ce project list
プロジェクトを取得中...
OK

名前     ID                                    状況    有効  選択済み  タグ  領域    リソース・グループ  経過時間
demoapp  XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  active  true  false           jp-tok  default             39m

デプロイ対象のCode Engineプロジェクトを指定する

どのプロジェクトのアプリをデプロイするのか、を指定します。

>ibmcloud ce project select --name demoapp

ビルド・デプロイコマンドの実行

ここが一番重要です。
最後にWebアプリのURLが表示されます。

>ibmcloud ce application create --name demo --build-source .
アプリケーション 'demo' を作成中...
パス「.」からアップロードするファイルのパッケージ化...
ビルド実行 'demo-run-NNNNN-NNNNNNNNN'を送信中...
イメージ 'private.jp.icr.io/ce--XXXXX-XXXXXXXXXXX/app-demo:NNNNNN-NNNN-XXXXX' を作成しています ...
ビルド実行が完了するのを待機しています...
ビルド実行状況: '実行中'
ビルド実行が正常に完了しました。
ビルド実行の状況を確認するには、'ibmcloud ce buildrun get -n demo-run-NNNNN-NNNNNNNNN' を実行してください。
アプリケーション 'demo' が作動可能になるのを待機しています。
構成 'demo' は、リビジョンが準備完了になるのを待機しています。
入口はまだ調整されていません。
ロード・バランサーが準備完了になるのを待機しています。
アプリケーション状況を確認するには、'ibmcloud ce application get -n demo' を実行してください。
OK

https://demo.XXXXXXXX.jp-tok.codeengine.appdomain.cloud

>

image.png

アプリを開いてみる

URL「demo.XXXXXXXX.jp-tok.codeengine.appdomain.cloud/hello-maven-webapp-1.0.0.0/index.jsp」を開いてみます。無事にJSPがコンパイルされて日付が動的に表示されるのを確認できたらOKです。

image.png

以上です。

ひとこと

簡単なことは簡単にできたほうがよいです。

参考になるかもしれないページ

Deploying your app from local source code with the CLI
https://cloud.ibm.com/docs/codeengine?topic=codeengine-app-local-source-code

Getting started with IBM Cloud Code Engine
https://cloud.ibm.com/docs/codeengine#app-hello

CLI を使用したローカル・ソース・コードからのアプリのデプロイ
https://cloud.ibm.com/docs/codeengine?topic=codeengine-app-local-source-code

Deploying and scaling applications
https://cloud.ibm.com/docs/codeengine?topic=codeengine-deploy-app-tutorial

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1