こんにちは、テクニカルサポートの宮本です!
今回は Docker コンテナ上の Tomcat で CData APIServer を動かしている構成に対して、コネクタを追加する方法をご紹介いたします。
使用する環境
EC2 で Amazon Linux の仮想マシンを作成し、Docker をインストールした状態です。
また、今回利用する APIServer とコネクタは下記リンクよりダウンロードすることができます。
※どちらも30 日間のトライアルが可能です
APIServer
https://www.cdata.com/jp/apiserver/
コネクタ
コネクタ追加には APIServer のエディションが Java 版の場合は CData JDBC Driver、.NET 版では CData ADO.NET を利用します。
今回はMongoDBを使用しますが、どのコネクタを使っても手順は同じです。
https://www.cdata.com/jp/drivers/dynamodb/jdbc/
コネクタ追加方法
追加する方法は APIServer の設定情報を外部DBで保持しているか否かで対応方法は変わってきます。
本記事では上段の管理用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 のコネクタが追加されていることが確認できるかと思います。
これで外部DBに設定情報を保持している構成のケースは以上となります。
おわりに
いかがでしたでしょうか。次回はバインドマウントした APIServer に対してコネクタを追加する方法をやってみたいと思います。
最後に Docker 上でご利用の場合には通常のトライアルキーだと有効になりませんので、試してみたい場合はこちらのサポートフォームよりご連絡ください。
CData Software Japan - サポートフォーム
ご連絡を受けましたら、すぐにサポートチームより専用のトライアルキーを発行いたします。
関連コンテンツ