これは、Spring Boot プロジェクト開発のために Docker をローカルで使用するのに役立つ簡単なチュートリアルです。実際の開発プロセスは、プロジェクトの複雑さとニーズによって異なる場合があります。
ローカル Docker は springboot プロジェクトを開発し、Docker コンテナ内のコードをローカルにリアルタイムで更新します。
ローカル コードの更新後に Docker コンテナでリアルタイム更新を実装するには、ローカル コード ディレクトリを Docker コンテナにマウントし、Spring Boot のホット デプロイ機能を使用します。こうすることで、コードをローカルで変更すると、Docker コンテナ内のアプリケーションが最新のコードを自動的に再読み込みし、変更をリアルタイムで反映します。具体的な手順は次のとおりです。
- 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_SECRET
DevTools プラグインを指定してリモート キーを使用するように設定していることに注意してください。
- 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
- コンテナーを構築して起動する: 次のコマンドを使用して、Docker コンテナーを構築して起動します。
バッシュ
docker-compose up --build
これで、Spring Boot アプリケーションが Docker コンテナーで実行され、コードの変更がリアルタイムでコンテナーに反映されるようになります。コードをローカルで編集でき、保存後、Docker コンテナ内のアプリケーションが最新のコードを自動的に再読み込みします。
ホット デプロイメント機能を使用するとパフォーマンスのオーバーヘッドが発生する可能性があるため、実稼働環境ではホット デプロイメントを無効にし、プリコンパイルされた JAR パッケージを使用してアプリケーションをデプロイする必要があることに注意してください。ただし、開発段階では、ホット デプロイメントは非常に便利で、開発の反復とデバッグ プロセスを高速化できます。