Tomcat for JavaでDockerコンテナ上のTomcatを指定する方法
Tomcat for JavaでDockerコンテナ上のTomcatを指定して使用する方法を説明していきます。
j-levia.hatenablog.jp
の「何故Dockerイメージおよびコンテナを使わないのか?」で書いた内容へのアンサー的な内容です。
本記事の内容です。
本記事の内容は何が嬉しいのか?
デバッグ用に使用するTomcatをいちいちインストールする必要が無くなります。また、Tomcatが不要になった時はDockerコンテナおよびイメージを削除するだけでよくなるので、開発環境が汚されることも無くなります。
対象読者
Visual Studio Code(VS Code)の拡張機能であるTomcat for JavaでDockerコンテナ上のTomcatを指定して使用したい方。本記事の内容を試した環境
ホストOS: Ubuntu 18.04Docker: 18.09.1-rc1, build bca0068
VS Code: ver 1.30.2
Tomcat for Java: ver 0.11.1
上記環境はVirtualBox上に構築しています。
Tomcat環境構築
1. Docker環境の権限変更
Tomcat for JavaでTomcatディレクトリを指定する際にアクセスできるよう、下記コマンドでにアクセス権限を付与します。
sudo chmod 755 /var/lib/docker sudo chmod 755 /var/lib/docker/volumes
ちなみに、元の設定に戻したい場合は下記のコマンドを実行することで戻すことができます。(権限変更前がデフォルト状態の場合。)
sudo chmod 711 /var/lib/docker sudo chmod 700 /var/lib/docker/volumes
2. Docker Volumeの作成
下記コマンドで使用するDocker Volumeを作成します。今回はTomcat9を使用するので
Tomcat9
という名前で作成します。
docker volume create tomcat9
作成後は
docker volume ls
を実行し、リストにtomcat9が表示されることを確認してください。
3. Tomcatコンテナ、Volume、シンボリックリンクを作成するスクリプトファイル作成
任意のディレクトリでrun-tomcat9-jre8.sh
というファイルを作成し、中に下記のコードを貼り付けて保存します。
#!/bin/bash # Declare variables. CreateServerDir="${HOME}/server/tomcat" UseVolumeName="tomcat9" TomcatMajorVer=9 JreMajorVer=8 VolumeDir="/var/lib/docker/volumes/${UseVolumeName}/_data" CreateSymbolicLink="${CreateServerDir}/${TomcatMajorVer}" UseImage="tomcat:${TomcatMajorVer}-jre${JreMajorVer}" ContainerName="tomcat${TomcatMajorVer}-jre${JreMajorVer}" # Stop and remove docker container. docker stop $ContainerName docker rm $ContainerName # Create and run docker container. docker run -p 18080:8080 -d --rm --name $ContainerName -v $UseVolumeName:/usr/local/tomcat $UseImage # Create symbolic link. mkdir -p $CreateServerDir rm $CreateSymbolicLink ln -sf $VolumeDir $CreateSymbolicLink # Change permission of docker volume directory for allow access. sudo chmod 777 -R $VolumeDir
Tomcatディレクトリへのシンボリックリンク作成場所を変更したい場合はCreateServerDir変数の中身を、
使用するDocker Volumeを変更したい場合はUseVolumeName変数の中身を、
他バージョンのTomcatを使用したい場合はTomcatMajorVer変数およびJreMajorVer変数の中身をそれぞれ変更してお使いください。
なんなら上記コードを元に自由に改良してください。
最後にDocker Volumeディレクトリの権限を全ユーザに対して読み取り、書き込み、実行可に設定していますが、開発環境でかつ使い捨ての環境なので、このような設定にしています。
あくまでもPublicになっていないPrivateな開発環境でのみ許されることなので、Publicな(インターネット上で公開されている)環境でこのような権限の設定は行わないでください。
4. 作成したスクリプトファイル実行
下記のコマンドで作成したスクリプトファイルを実行します。sh run-tomcat9-jre8.sh
Tomcat for JavaでDockerコンテナ上のTomcatを使用
1. Tomcat for JavaでTomcatコンテナ内のTomcatを指定および追加
Visual Studio Code(VS Code)を起動し、デバッグに使用するTomcatサーバを追加します。Tomcat for Java自体の使い方については本記事では説明しません。
公式情報を参照ください。
marketplace.visualstudio.com
Tomcatのディレクトリを選択する時、
$HOME/server/tomcat/9
もしくは
/var/lib/docker/volumes/tomcat9/_data
のどちらかのディレクトリを選択してください。
2. 追加したTomcatサーバの名前を変更
追加したTomcatサーバの名前はデフォルトだと一目で何かを判断できないような名前になっているので、サーバ名を右クリック→Rename(日本語環境だと「名前を変更?」)→画面上部に表示されたテキストボックスに設定する名前を入力しEnter
で、お好きな名前に変更してください。