各製品の資料を入手。
詳細はこちら →Docker コンテナ(Tomcat)上のAPIServer にコネクタを追加する: 管理用DB利用偏
こんにちは、テクニカルサポートの宮本です!
今回は 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(外部のDB)に設定情報を保持
→APIServer のwar ファイルにコネクタを追加Dockerホスト側にバインドマウントして設定情報を保持
→マウント先のディレクトリにコネクタを直接追加
本記事では上段の管理用DB利用時のコネクタ追加方法を試してみます。
※下段の方法は次回やります。
なお、Docker上でAPIServer を使う手順は下記記事をご参照ください。
(管理用DBに保持する手順も含めて)
手順
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 - サポートフォーム
ご連絡を受けましたら、すぐにサポートチームより専用のトライアルキーを発行いたします。