ローカル Docker が springboot プロジェクトを開発し、ローカル更新コードが Docker コンテナ内でリアルタイムで更新されます。

これは、Spring Boot プロジェクト開発のために Docker をローカルで使用するのに役立つ簡単なチュートリアルです。実際の開発プロセスは、プロジェクトの複雑さとニーズによって異なる場合があります。

ローカル Docker は springboot プロジェクトを開発し、Docker コンテナ内のコードをローカルにリアルタイムで更新します。

ローカル コードの更新後に Docker コンテナでリアルタイム更新を実装するには、ローカル コード ディレクトリを Docker コンテナにマウントし、Spring Boot のホット デプロイ機能を使用します。こうすることで、コードをローカルで変更すると、Docker コンテナ内のアプリケーションが最新のコードを自動的に再読み込みし、変更をリアルタイムで反映します。具体的な手順は次のとおりです。

  1. Dockerfile の作成: Spring Boot アプリケーションを含むイメージを構築するための Dockerfile を作成します。JVM 引数や DevTools プラグインなど、デバッグとホット デプロイメントに必要な依存関係を Dockerfile に必ず含めてください。Dockerfile の例を次に示します。

Dockerfile

# 基于Java 11的官方Spring Boot镜像
FROM adoptopenjdk:11-jre-hotspot

# 设置工作目录
WORKDIR /app

# 复制应用程序的JAR文件到镜像中
COPY target/your-application.jar app.jar

# 设置环境变量,启用Spring Boot热部署
ENV SPRING_PROFILES_ACTIVE=dev
ENV SPRING_DEVTOOLS_REMOTE_SECRET=mysecret

# 设置启动命令
CMD ["java", "-jar", "-Dspring.devtools.remote.secret=${SPRING_DEVTOOLS_REMOTE_SECRET}", "app.jar"]

SPRING_PROFILES_ACTIVE=devこの Dockerfile では、開発環境を有効にし、SPRING_DEVTOOLS_REMOTE_SECRETDevTools プラグインを指定してリモート キーを使用するように設定していることに注意してください。

  1. docker-compose.yml の作成: docker-compose.yml ファイルを作成して、サービスとコンテナーの構成を定義します。ここでは、ライブ更新のためにコード ディレクトリを Docker コンテナにマウントします。docker-compose.yml の例を次に示します。

ヤムル

version: '3'
services:
  spring-app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    volumes:
      - ./src:/app/src
      - ./target:/app/target

この docker-compose.yml では、コードがリアルタイムで同期できるように、./srcディレクトリ/app/srcをコンテナーのディレクトリにマウントします。同様に、アプリのビルド結果の同期を保つために、./targetディレクトリをコンテナのディレクトリにマウントします。/app/target

  1. コンテナーを構築して起動する: 次のコマンドを使用して、Docker コンテナーを構築して起動します。

バッシュ

docker-compose up --build

これで、Spring Boot アプリケーションが Docker コンテナーで実行され、コードの変更がリアルタイムでコンテナーに反映されるようになります。コードをローカルで編集でき、保存後、Docker コンテナ内のアプリケーションが最新のコードを自動的に再読み込みします。

ホット デプロイメント機能を使用するとパフォーマンスのオーバーヘッドが発生する可能性があるため、実稼働環境ではホット デプロイメントを無効にし、プリコンパイルされた JAR パッケージを使用してアプリケーションをデプロイする必要があることに注意してください。ただし、開発段階では、ホット デプロイメントは非常に便利で、開発の反復とデバッグ プロセスを高速化できます。

おすすめ

転載: blog.csdn.net/qq_40963664/article/details/131893467