Docker コンテナ(Tomcat)上のAPIServer にコネクタを追加する: 管理用DB利用偏

by 宮本航太 | 2021年09月03日

f:id:sennanvolar44:20210903183946p:plain こんにちは、テクニカルサポートの宮本です!

今回は Docker コンテナ上の Tomcat で CData APIServer を動かしている構成に対して、コネクタを追加する方法をご紹介いたします。

使用する環境

EC2 で Amazon Linux の仮想マシンを作成し、Docker をインストールした状態です。
また、今回利用する APIServer とコネクタは下記リンクよりダウンロードすることができます。
※どちらも30 日間のトライアルが可能です

APIServer
https://www.cdata.com/jp/apiserver/

f:id:sennanvolar44:20210902174605p:plain

コネクタ
コネクタ追加には APIServer のエディションが Java 版の場合は CData JDBC Driver、.NET 版では CData ADO.NET を利用します。
今回はMongoDBを使用しますが、どのコネクタを使っても手順は同じです。

https://www.cdata.com/jp/drivers/dynamodb/jdbc/ f:id:sennanvolar44:20210902180429p:plain

コネクタ追加方法

追加する方法は APIServer の設定情報を外部DBで保持しているか否かで対応方法は変わってきます。

  • 管理用DB(外部のDB)に設定情報を保持
    →APIServer のwar ファイルにコネクタを追加

  • Dockerホスト側にバインドマウントして設定情報を保持
    →マウント先のディレクトリにコネクタを直接追加

本記事では上段の管理用DB利用時のコネクタ追加方法を試してみます。
※下段の方法は次回やります。

なお、Docker上でAPIServer を使う手順は下記記事をご参照ください。
(管理用DBに保持する手順も含めて)

www.cdatablog.jp

手順

apiserver.war ファイルにコネクタを追加して、Dockerfile で Tomcat にAPIServer を乗せたコンテナを作成していきます。

APIServer のwarファイル展開

まずは Docker ホスト側に apiserver.war と CData DynamoDB JDBC Driver をアップロードしておきます。アップロードが完了しましたら、apiserver.war を一度展開します。

[root@ip-172-31-35-49 ]# ll
total 437852
-rw-r--r-- 1 root root 107353187 Oct  6  2020 apiserver.war
[root@ip-172-31-35-49 ]# jar xf apiserver.war
[root@ip-172-31-35-49 ]#


DynamoDB コネクタのインストール

DynamoDB JDBC Driver をどこでも良いのでインストールします。というのも、インストール後に格納される cdata.jdbc.amazondynamodb.jar を APIServer.war の中に入れるため、事前にインストールが必要となります。
インストールは setup.jarを実行するだけです。

[root@ip-172-31-35-49 hatena]# ll
total 17320
-rw-r--r--  1 root root 8829056 Sep  2 09:11 AmazonDynamoDBJDBCDriver+(1).zip
drwxr-xr-x 12 root root     261 Sep  2 09:22 apiserver
-rw-r--r--  1 root root     755 Jul 16 02:01 readme.txt
-rw-r--r--  1 root root 8898598 Jul 16 02:14 setup.jar
[root@ip-172-31-35-49 hatena]#
[root@ip-172-31-35-49 hatena]#
[root@ip-172-31-35-49 hatena]# java -jar setup.jar
~
[root@ip-172-31-35-49 hatena]# cd lib/
[root@ip-172-31-35-49 lib]# ll
total 7520
-rw-r--r-- 1 root root 7688331 Jul 16 02:13 cdata.jdbc.amazondynamodb.jar
-rw-r--r-- 1 root root     378 Sep  2 09:29 cdata.jdbc.amazondynamodb.lic
-rw-r--r-- 1 root root    1405 Jul 16 02:01 cdata.jdbc.amazondynamodb.remoting.ini
[root@ip-172-31-35-49 lib]#


コネクタを展開したapiserver.warの中に配置

それでは cdata.jdbc.amazondynamodb.jar をwarファイル展開先の WEB-INF/lib/ に配置します。

[root@ip-172-31-35-49 lib]# cp -p cdata.jdbc.amazondynamodb.jar ../apiserver/WEB-INF/lib/
[root@ip-172-31-35-49 lib]# ll ../apiserver/WEB-INF/lib/
total 57968
-rw-r--r-- 1 root root  7379480 Oct  6  2020 cdata.apiserver.jar
-rw-r--r-- 1 root root  7688331 Jul 16 02:13 cdata.jdbc.amazondynamodb.jar
-rw-r--r-- 1 root root 13131376 Jul 23  2020 cdata.jdbc.excel.jar
-rw-r--r-- 1 root root  9947939 Jul 23  2020 cdata.jdbc.mysql.jar
-rw-r--r-- 1 root root  8969138 Jul 23  2020 cdata.jdbc.postgresql.jar
-rw-r--r-- 1 root root  3224708 Jun 26  2019 derby.jar
-rw-r--r-- 1 root root   502694 Apr  4  2017 postgresql-9.0-801.jdbc3.jar
-rw-r--r-- 1 root root   284610 Oct  5  2020 rssbus.Formatters.jar
-rw-r--r-- 1 root root  1344749 Oct  5  2020 rssbus.httpops.jar
-rw-r--r-- 1 root root    15113 Oct  5  2020 rssbus.jar
-rw-r--r-- 1 root root   821262 Oct  5  2020 rssbus.smtpops.jar
-rw-r--r-- 1 root root    13565 Oct  5  2020 rssbus.sysops.jar
-rw-r--r-- 1 root root  6012107 Apr  3  2019 sqlitejdbc.jar
[root@ip-172-31-35-49 lib]#

warファイルを再作成

展開時に使用した apiserver.war を削除し、その後にwarファイルを作成します。

[root@ip-172-31-35-49 apiserver]# ll
total 104880
drwxr-xr-x  2 root root       325 Oct  6  2020 admin
-rw-r--r--  1 root root       290 Jun 18  2020 admin.rsc
drwxr-xr-x  2 root root         6 May 14  2020 api
-rw-r--r--  1 root root       288 May 14  2020 api.rsc
-rw-r--r--  1 root root 107353187 Oct  6  2020 apiserver.war
drwxr-xr-x  3 root root        41 Oct  6  2020 app_data
-rw-r--r--  1 root root     17542 May 14  2020 favicon.ico
drwxr-xr-x  3 root root        19 Oct  6  2020 help
drwxr-xr-x  2 root root         6 Oct  6  2020 includes
-rw-r--r--  1 root root        43 May 14  2020 index.jsp
-rw-r--r--  1 root root       361 May 14  2020 logout.jsp
drwxr-xr-x  2 root root        25 Oct  6  2020 META-INF
drwxr-xr-x  2 root root         6 Oct  6  2020 pub
-rw-r--r--  1 root root       554 May 14  2020 query.rsc
drwxr-xr-x  2 root root         6 Oct  6  2020 src
drwxr-xr-x 14 root root       211 Oct  6  2020 ui
drwxr-xr-x  3 root root        32 Oct  6  2020 WEB-INF
[root@ip-172-31-35-49 apiserver]# rm -f apiserver.war
[root@ip-172-31-35-49 apiserver]# jar -cf apiserver.war ./*
[root@ip-172-31-35-49 apiserver]# ll apiserver.war
-rw-r--r-- 1 root root 114403128 Sep  2 09:40 apiserver.war
[root@ip-172-31-35-49 apiserver]#

これで準備は整いました。あとはDockerイメージを作成して起動してみます。

Docker イメージ作成

それでは、Dockerfile とその中で使用する apiserver.war などを用意してイメージを作成します。

[root@ip-172-31-35-49 docker]# ll
total 111744
-rw-r--r-- 1 root root 114403128 Sep  2 09:40 apiserver.war
-rw-r--r-- 1 root root       152 Aug 20 05:39 Dockerfile
-rw-r--r-- 1 root root      8749 Aug 19 14:14 server.xml
-rw-r--r-- 1 root root      2301 Aug 19 14:01 tomcat-users.xml
[root@ip-172-31-35-49 docker]# docker build --no-cache -t tomcat:apiserver .
Sending build context to Docker daemon  114.4MB
Step 1/4 : FROM tomcat:latest
 ---> 02c2632869e8
Step 2/4 : ADD ./apiserver.war /usr/local/tomcat/webapps
 ---> d28cd1d45807
Step 3/4 : ADD ./tomcat-users.xml /usr/local/tomcat/conf
 ---> ccdcc019d098
Step 4/4 : ADD ./server.xml /usr/local/tomcat/conf
 ---> 7e0289d8d91d
Successfully built 7e0289d8d91d
Successfully tagged tomcat:apiserver
[root@ip-172-31-35-49 docker]#

Docker コンテナの実行

[root@ip-172-31-35-49 docker]# docker run --rm -it --name apiserver -p 8080:8080 tomcat:apiserver
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
~


起動されたことが確認できましたら、「http://~:8080/apiserver」で APIServer に接続します。
接続ができましたら、「設定」→「接続」でDynamoDB のコネクタが追加されていることが確認できるかと思います。
f:id:sennanvolar44:20210903172218p:plain

これで外部DBに設定情報を保持している構成のケースは以上となります。

おわりに

いかがでしたでしょうか。次回はバインドマウントした APIServer に対してコネクタを追加する方法をやってみたいと思います。
最後に Docker 上でご利用の場合には通常のトライアルキーだと有効になりませんので、試してみたい場合はこちらのサポートフォームよりご連絡ください。

CData Software Japan - サポートフォーム

ご連絡を受けましたら、すぐにサポートチームより専用のトライアルキーを発行いたします。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。