DBCPでloginTimeoutの設定の仕方
mabushiisign
眩しいサインを見ただろう
今回、公式のTomcatのDockerイメージを使ってみた。
公式URLはこちら。
まずは、イメージを落とします。バージョンは、lastestを使わずちゃんと指定しましょう。今使っているバージョンが分からなくなります。
$ docker pull tomcat:7.0.85-jre8
7.0.85-jre8: Pulling from library/tomcat
c73ab1c6897b: Pull complete
1ab373b3deae: Pull complete
b542772b4177: Pull complete
0bcc3741ab14: Pull complete
421d624d778d: Pull complete
26ad58237506: Pull complete
90a5e00634c6: Pull complete
8baa304f616f: Pull complete
9c737e212569: Pull complete
3efcc0fabee8: Pull complete
eb8df65e3f30: Pull complete
03927c7a9d96: Pull complete
Digest: sha256:c6924b36c98f11d3cb76e29a7a8302678452498bc604cf97ba2f3c92bb7a2f24
Status: Downloaded newer image for tomcat:7.0.85-jre8
デプロイしたいwarは、volumesで/usr/local/tomcat/webapps/に配置します。
docker-composeではこんな感じでokです。
volumes:
- './app/xxx.war:/usr/local/tomcat/webapps/xxx.war'
単純なアプリであれば、シンプルなのですが、
今回使ったのは環境別にプロパティファイルを切り替えられるようにwarの中に環境依存の物を含めていません。
なので、今回は
/usr/local/tomcat/classes/フォルダを作ってここにプロパティファイルを格納して、起動時にclasspathに設定して読み込ませようとしました。
が、やり方に手こずりました。
これはwarと同じく、volumesで配置します。
docker-composeではこんな感じでokです。
volumes:
- './app/classes:/usr/local/tomcat/classes'
これに苦労しました。
docker-composeでenvironmentでCLASSPATH、JAVA_OPTSに指定すれば起動時のcatalina.shに使われるかと思ってましたが、実際には使われませんでした。
公式サイトをみても全然載っていない。ですが、通常のtomcatと同様にsetenv.shに書けばいいと気づき以下のようにして対応しました。
setenv.sh
1#!/bin/bash
2
3CLASSPATH=/usr/local/tomcat/classes
4CATALINA_OPTS='-Dfile.encoding=UTF-8'
volumesの指定は、こんな感じ。
volumes:
- './app/setenv.sh:/usr/local/tomcat/bin/setenv.sh'
こうすることで、無事に設定することができました。
あとは、ログもホストにマッピングするなどして永続化はした方が良いです。