Docker의 Jooby (Kotlin × Gradle)를 핫 리로드하면서 IntelliJ에서 RemoteDebug

1-하는 일



타이틀대로 Docker나 Intellij의 실행 구성을 포함한 전부 리포지토리는 이쪽
Github 저장소

2-완벽하지 않은 곳



・후술의 joobyRun을 실시한 후, RemoteDebug를 실행하지 않으면 핫 리로드가 움직이지 않습니다.
 →뒤에서 port5005에 대한 접속 대기가 일어나고 있다? ?

· 브레이크 포인트에서 멈추는 동안 핫 리로드가 작동하지 않았습니다.

3-포인트



・Docker내의 JDK와 IntelliJ의 JDK는 맞추자!
 →이 기사에서는 amazoncorretto:11로 모았습니다.

· docker-compose.yml : 환경에 환경 변수 GRADLE_OPTS를 지정

docker-compose.yml
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를 주석 처리하면됩니다.

좋은 웹페이지 즐겨찾기