CData Software Blog

クラウド連携のCData Software の技術ブログです。

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

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 - サポートフォーム

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