のためのコードセットアップセットアップ


最近、私は主流プロジェクト/アプリケーションのためのスプリングブートとDocker開発のためにどのようにレバレッジとコードエディタを使用するかを見始めました.この記事では、すぐに開始される微妙なポイントをカバーしようとします.

TL;DR

  • 拡張パックのインストール
  • Javaランタイムの設定settings.json
  • セットアップDockerは、パスを構成するBUILD_ARGS
  • リモートデバッグを有効にする環境設定
  • 拡張パックのインストール


    開始部分は比較的簡単で、必要なのは以下の拡張モジュールをインストールすることです — 
  • Extension Pack for Java
  • Spring Boot Extension Pack
  • Spring Boot Dashboard
  • Lombok Annotations Support
  • Docker
  • ランタイムの構成


    あなたが私のような場合は、別のJDKを使用してプロジェクトを持っている可能性があります.私のマシン上で複数のJDKを管理する方法の一つはSDKMAN . VSコードで遭遇した問題は、様々なランタイムへのパスを手動で指定する必要があります.設定を編集することで同じことができます.JSONのように-
    “java.configuration.runtimes”: [
       {
           “name”: “JavaSE-1.8”,
           “path”: “$HOME/.sdkman/candidates/java/8.0.275.hs-adpt”
       },
       {
            "name": "JavaSE-15",
            "path": "$HOME/.sdkman/candidates/java/15.0.2.j9-adpt"
       },
       {
           “name”: “JavaSE-11”,
           “path”: “$HOME/.sdkman/candidates/java/11.0.14-zulu”,
           “default”: true
       }
    ]
    

    ドッカービルダーズ


    私は、私たちのpringbootアプリケーションのほとんどは、同じdockerfileを使用していると、それらのargsを使用していることに気づいた.そのようなファイルのサンプルは、ここにあります —

    FROM openjdk:11.0.12-jre-slim-bullseye
    VOLUME /tmp
    ARG JAR_FILE
    ADD ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=UTC", "-XshowSettings:vm", "-XX:+UseContainerSupport", "-jar", "-Xms2048M", "-XshowSettings:vm", "/app.jar"]
    
    これはVSコードにあまり関係していませんが、以下のコマンドを実行することによってDockerのイメージを使用してDockerイメージを構築したい類似の問題に遭遇しているかもしれない読者に役立つかもしれないと思いました — docker compose up --build myApp -dこれの代替は、マルチステッププロセスです
    $ docker compose build myApp --build-arg JAR_FILE=target/myApp.jar
    $ docker compose up myApp
    
    これは流暢ではない.私はいくつかのオプションを試してみて、最後にいくつかのヒットと裁判で私は魅力のように動作するサービスの定義を見つけた.ここでは、Dockerの構成サービスのサンプルです —

    version: '3.2'
    services:
     myApp:
       build:
         context: ./myApp
         args:
           JAR_FILE: target/myApp.jar
       ports:
         - "8080:8080"
    
    上記の構成は、マルチモジュールmaven/gradle セットアップとmyApp は、春のブートアプリケーションの1つです.

    リモートデバッグのためのVSコードの設定


    最後のビットは、デバッグ・ポートで実行されているスプリング・ブート・アプリケーションを取得し、リモートデバッガに対するVSコード接続を持つことでした.私は強迫的ではない解決策を探していたし、複数の管理したくなかったDOCKERFILE 同じプロジェクトのためのsは、デバッグのために、そして、生産のためにイメージを構築するために、1です.
    これは、設定によって達成されたJAVA_TOOL_OPTION Dockerの環境変数がそうであるファイル自体を構成します —

    version: '3.2'
    services:
     myApp:
       build:
         context: ./myApp
         args:
           JAR_FILE: target/myApp.jar
     environment:
       - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,address=*:8081,server=y,suspend=n
     ports:
       - "8080:8080"
       - "8081:8081"
    
    ここでDocker comup - upコマンドを使用してアプリケーションを起動すると、ログ文を参照する必要があります.これは、リモートデバッグのためにリモート接続を —

    Picked up JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,address=*:8081,server=y,suspend=n
    Listening for transport dt_socket at address: 8081
    
    次の部分はリモートデバッガに接続するためのVSコードの設定でした.この部分は比較的簡単だった.新しい「run and debug」設定を追加する —

    {
       "type": "java",
       "name": "Remote MyApp Debug (attach)",
       "request": "attach",
       "hostName": "localhost",
       "port": 8081
    }
    
    とVoila!コンテナの中で実行中のスプリングブートアプリケーションに接続できます.
    ハッピーデバッグ!