フォーラム

GroupSession

フォーラム
GroupSessionについての自由な情報交換の場としてご利用ください

GroupSessionフォーラム:投稿一覧

 
フォーラム:00_インストール・設定
docker-composeによるTomcat9.0+Groupsessionが動作しない
[ 7580 ] docker-composeによるTomcat9.0+Groupsessionが動作しない

古いサーバーですが、CUIであれば活用できそうなので、
gsession.warをダウンロードし、docker-composeで立ち上げたところ、
下記エラーでlocalhostからも見ることができません。
ちなみに、Tomcat:latestでは404 Not Foundで見ることができないため、
バージョンを指定して行いました。
docker-composeで立ち上げ成功した方おられましたら、
アドバイスいただけると幸いです。
(これが成功したら、Groupsessionの立ち上げが大分楽になりますね)

warファイルがコンテナ内にも展開されたこと、
他のコンテナは正しく動作することは確認済みです。

【サーバー】 FUJITSU PRIMERGY RX300 S5
【OS】 Ubuntu Server 20.04LTS
【Docker Version】 20.10.7
【docker-compose.yaml】
version: '3'

services:

app:
container_name: tomcat
image: tomcat:9.0
ports:
- 8080:8080
volumes:
- ./webapps:/usr/local/tomcat/webapps

投稿者7b_old_servers
最新書き込み2021/11/01 14:58:46
[ 7581 ] Re: docker-composeによるTomcat9.0+Groupsessionが動作しない

【エラーメッセージ】
HTTP Status 400 Bad Request
_____________________________________________________________________________________________________________________

Type Exception Report

Message Invalid character found in the request target [/gsession/"./common/cmn001.do" ]. The valid characters are defined
in RFC 7230 and RFC 3986

Description The server cannot or will not process the request due to something that is perceived to be a client error
(e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

Exception
java.lang.IllegalArgumentException: Invalid character found in the request target [/gsession/"./common/cmn001.do" ]. The valid characters are defined in RFC 7230 and RFC 3986
org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:502)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:269)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:829)

Note The full stack trace of the root cause is available in the server logs.
_____________________________________________________________________________________________________________________

Apache Tomcat/9.0.54

投稿者7b-old-servers
最新書き込み2021/11/01 14:59:34
[ 7582 ] Re: docker-composeによるTomcat9.0+Groupsessionが動作しない

dockerなしのDebian環境ですが、apt由来のtomcat9下で動いています。
試しに、docker環境を作って確認してみます。

投稿者デイル
最新書き込み2021/11/02 11:36:12
[ 7583 ] Re: docker-composeによるTomcat9.0+Groupsessionが動作しない

確認のために手順を再現してみました。

Ubuntu Server 20.4の素の環境に、aptからtomcat9をインストール
5.1.1のgsession.warを/var/lib/tomcat9/webapps/に配置
systemctlでtomcat9.serviceをrestart
ブラウザから http://192.168.xxx.xxx:8080/gsession/ にアクセス可能
(IPアドレスはサーバに設定したもの)
この状態で、OSの起動時からアクセス可能です。

ここにapt install docker-composeし、ホームにdocker-compose.ymlを作成。
sudo systemctl stop tomcat9.service してから sudo docker-compose upしてみましたが
warは展開されないもののtomcat自体は応答していました。

おっしゃっているエラーの再現には何か足りないのだと思いますが、
dockerには不慣れなせいか違いがよくわかっていません。

投稿者デイル
最新書き込み2021/11/02 14:15:44
[ 7590 ] Re: docker-composeによるTomcat9.0+Groupsessionが動作しない

検証ありがとうございます。
何が原因か分かりませんが、404 Not Foundにエラーが変わりました。
上記エラーは、nginxとの関係で出たのかもしれませんが、記憶が曖昧です…
確かに、warファイルは展開どころかコンテナ内にコピーもされていません。
引き続き、対処法考えたいと思います。

投稿者7b-old-servers
最新書き込み2021/11/11 11:58:34
[ 7591 ] Re: docker-composeによるTomcat9.0+Groupsessionが動作しない

volumeでマウント指定したにもかかわらず、warがコピーされませんでした。
強制的にコピーすると動きました。
docker cp gsession.war tomcat:/usr/local/tomcat/webapps/
ただし、コンテナ削除するとデータも消えてしまうということなので、
根本的な解決方法が必要です。
一応、dockerでも構成可能ということが分かりましたので、
もう少しdockerの勉強をして再挑戦します。

投稿者7b-old-servers
最新書き込み2021/11/11 17:09:17
[ 7630 ] Re: Re: docker-composeによるTomcat9.0+Groupsessionが動作しない

> volumeでマウント指定したにもかかわらず、warがコピーされませんでした。
> 強制的にコピーすると動きました。
> docker cp gsession.war tomcat:/usr/local/tomcat/webapps/
> ただし、コンテナ削除するとデータも消えてしまうということなので、
> 根本的な解決方法が必要です。
> 一応、dockerでも構成可能ということが分かりましたので、
> もう少しdockerの勉強をして再挑戦します。

docker-compose.ymlで与えるのはコンテナ実行時のオプションです。
コンテナイメージ作成時には使用されません。
つまり、build時にはVolumeでマウントするファイルシステムには何も書かれません。

Dockerfileでコンテナイメージを生成したとき、warファイルはコンテナイメージの中に含まれています。

実行時に、docker-composeのVolumeで外部ファイルシステムをマウントすると、gsession.warを置いたディレクトリがマウントポイントになるため、コンテナ側からはgsession.warが見えなくなります。

GroupSessionをDockerコンテナで永続化する場合、以下のように行います

build時(イメージ作成)
1.イメージ内に/opt/data/dbのようにデータベースを置くディレクトリを作成
2.gsession.warを予め展開して配置
3.gsdata.confを変更してデータを/opt/data以下に置くように設定

コンテナ実行時
コンテナの/opt/data/dbなど、データを置くディレクトリをマウントポイントとして、外部ボリュームをマウントする
そうすることで、データが外部ボリューム側に書かれ、永続化が可能となる

投稿者社内SE
最新書き込み2022/01/05 15:34:21
[ 7638 ] Re: docker-composeによるTomcat9.0+Groupsessionが動作しない

上記方法により、warがマウントされ、データの永続化も成功しました。
ありがとうございます。
マウントフォルダの場所、Tomcatのバージョン指定などを気を付ければ、
簡単にGROUPSESSIONが立ち上げられることが分かりました。

OS: Ubuntu 20.04.3 LTS

任意のフォルダにdocker-compose.yamlを作成し(内容後記)、
配下にwebappsフォルダを作成、フォルダ内にgsession.warを配置。
docker-compose up -d コマンドでGROUPSESSIONが立ち上がる。

[docker-compose.yaml]
version: '3'

services:

app:
container_name: tomcat
image: tomcat:9.0
ports:
- 8080:8080
volumes:
- ./webapps:/usr/local/tomcat/webapps

投稿者七ヶ浜町情シス
最新書き込み2022/01/25 11:29:58
スレッドURLhttps://groupsession.jp/wbs/bulletin/bbs080.do?bbs010forumSid=1&threadSid=2759
 


TOP