Docker内のJooby(Kotlin × Gradle)をホットリロードさせながらIntelliJでRemoteDebugする
1-やること
タイトルの通り、DockerやIntellijの実行構成を含んだ全部入りリポジトリはこちら
Githubリポジトリ
2-完璧でないところ
・後述のjoobyRunを行った後、RemoteDebugを走らせないとホットリロードが動きません。
→裏でport5005に対する接続待ちが起きてる??
・ブレークポイントで止まっている間はホットリロードが効きませんでした。
3-ポイント
・Docker内のJDKとIntelliJのJDKは合わせよう!
→この記事ではamazoncorretto:11でそろえてます。
・docker-compose.yml: environmentに環境変数GRADLE_OPTSを指定
version: '3'
services:
app:
shm_size: 4096m
build: "./build/app"
ports:
- '8015:8080'
- '5005:5005'
volumes:
- "./app:/app"
environment:
TZ: 'Asia/Tokyo'
GRADLE_OPTS: '-Dorg.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005'
working_dir: /app
cap_add:
- SYS_ADMIN
security_opt:
- seccomp:unconfined
tty: true
・IntelliJにdocker-compose用の実行構成を作成
・RemoteDebug用の実行構成を作成
Command line arguments for remote JVMの内容が先述の「GRADLE_OPTS」とイコールになるはず
・docker-composeの起動構成を実行→コンテナ内部でjoobyRun実行
コマンド実行
./gradlew joobyRun
・RemoteDebugの起動構成を実行→適当に置いたブレークポイントを通るパスにアクセス
以下にアクセス
http://localhost:8015/
ソース修正するとホットリロードが行われる
※ブレークポイントで処理停止させている場合は勿論効かないです。(重要なので二度目)
4-おわり
・dockerでローカルを汚さないかつ、IntelliJの強力なアシスト+joobyRunでのホットリロード+RemoteDebug
LL言語並みに高速でリコンパイルされるわけでないですが、これで開発がとても楽になります。
・後述のjoobyRunを行った後、RemoteDebugを走らせないとホットリロードが動きません。
→裏でport5005に対する接続待ちが起きてる??
回避策としてはRemoteDebugが不要な時はdocker-compose.ymlのGRADLE_OPTSをコメントアウトすれば良いです。
Author And Source
この問題について(Docker内のJooby(Kotlin × Gradle)をホットリロードさせながらIntelliJでRemoteDebugする), 我々は、より多くの情報をここで見つけました https://qiita.com/P3117/items/0cbb92f94ae779a6d380著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .