Docker を使用して Spring Boot アプリケーションをコンテナ化し、継続的統合と継続的デプロイメントを実現します
Docker を使用して Spring Boot アプリケーションをコンテナ化し、継続的統合と継続的デプロイを実現します。
Docker は、アプリケーションとその依存リソースを統合できるオープンソースのコンテナ化プラットフォームです。別のコンテナーを作成し、イメージをデプロイして実行します。最新のアプリケーションを構築および展開するための、軽量、高速、ポータブルなソリューションを提供します。
Spring Boot は、Java アプリケーションを構築するためのシンプルかつスケーラブルな方法を提供する迅速な開発フレームワークです。 Docker と Spring Boot を組み合わせることで、アプリケーションの迅速なデプロイ、スケーリング、管理という目標を達成できます。
この記事では、Docker を使用して Spring Boot アプリケーションをコンテナ化し、継続的インテグレーションと継続的デプロイのプロセスを実装する方法を紹介し、対応するコード例を示します。
- 準備
始める前に、Docker と Java 開発環境がインストールされていること、および基本的な Spring Boot アプリケーション開発の経験があることを確認してください。 - Spring Boot アプリケーションの作成
まず、単純な Spring Boot アプリケーションを作成する必要があります。 Spring Initializr (https://start.spring.io/) を使用して、新しい Spring Boot プロジェクトをすばやく作成することも、既存の Spring Boot プロジェクトを使用することもできます。
ここでは、以下に示すような単純な Hello World アプリケーションを作成します。
@Controller public class HelloWorldController { @GetMapping("/") public String hello(Model model) { model.addAttribute("message", "Hello, Docker!"); return "hello"; } public static void main(String[] args) { SpringApplication.run(HelloWorldController.class, args); } }
このコードは、ルート パスにアクセスすると、「Hello, Docker」を返す基本的な Spring MVC コントローラーを作成します。 !" メッセージ。
- Docker イメージの構築
次に、Docker でデプロイできるイメージを構築する必要があります。これを行うには、イメージのビルド ルールを定義する Dockerfile を作成する必要があります。
プロジェクトのルート ディレクトリに Dockerfile という名前のファイルを作成し、次の内容を追加します。
# 使用一个基础的Java 8镜像 FROM openjdk:8-jdk-alpine # 将应用的jar包添加到容器中 COPY target/demo-0.0.1-SNAPSHOT.jar /app.jar # 暴露8080端口 EXPOSE 8080 # 运行jar包 ENTRYPOINT ["java","-jar","/app.jar"]
上記の Dockerfile は、Alpine Linux に基づく Java 8 イメージをベース イメージとして使用します。 。次に、構築された jar パッケージをコンテナーにコピーし、ENTRYPOINT 命令を通じてアプリケーションを実行します。
イメージをビルドするコマンドは次のとおりです:
$ docker build -t spring-boot-demo .
イメージがビルドされた後、次のコマンドを使用してビルドが成功したかどうかを確認できます:
$ docker images
名前が表示されるはずです。 spring-boot-demo のミラーです。
- Docker コンテナの実行
イメージを取得したら、イメージに基づいて Docker コンテナを作成して実行できます。
次のコマンドを実行してコンテナを開始します:
$ docker run -d -p 8080:8080 spring-boot-demo
このうち -d パラメータはコンテナをバックグラウンドで実行することを意味し、-p パラメータは 8080 ポートをマッピングすることを意味しますホストのポートをコンテナの 8080 ポートに接続します。
コンテナーが正常に起動したかどうかを確認するには、次のコマンドを使用してコンテナーの実行ステータスを確認できます。
$ docker ps
spring-boot-demo という名前のコンテナーがrunning は、コンテナが正常に起動されたことを意味します。
- 更新の展開
アプリケーションに新しい更新がある場合、次の手順でアプリケーションの更新と展開を完了できます。
まず、アプリケーション コードをローカルで更新し、イメージを再構築します:
$ docker build -t spring-boot-demo .
次に、古いコンテナを停止して削除します:
$ docker stop [CONTAINER_ID] $ docker rm [CONTAINER_ID]
その後、新しいコンテナを実行します。コンテナをもう一度:
$ docker run -d -p 8080:8080 spring-boot-demo
- 継続的インテグレーションと継続的デプロイメント
上記の手順を手動で実行してアプリケーションを構築してデプロイすることもできますが、大規模で頻繁な更新の場合、これは明らかに非効率でエラーです。 -傾向がある。したがって、CI/CD ツール (Jenkins、GitLab CI など) を使用して、自動化された継続的インテグレーションと継続的デプロイを実現できます。
次は、Jenkins を使用した簡単な例です。
- Jenkins のインストールと構成
Jenkins の公式ドキュメントに従い、Jenkins をインストールして構成し、Jenkins が適切であることを確認します。ソースコードにアクセスして環境を構築できます。 - Jenkins タスクの作成
Jenkins のパイプライン機能を使用して新しいタスクを作成し、ソース コード ウェアハウス アドレス、ビルド スクリプト、トリガー メソッドなどの関連パラメーターを構成します。 - ビルド プロセスの構成
Jenkins ビルド スクリプトに、次のコンテンツを追加します。
pipeline { agent any stages { stage('Build') { steps { sh 'mvn clean package -DskipTests' } } stage('Build Docker Image') { steps { sh 'docker build -t spring-boot-demo .' } } stage('Deploy') { steps { sh 'docker stop spring-boot-demo' sh 'docker rm spring-boot-demo' sh 'docker run -d -p 8080:8080 --name spring-boot-demo spring-boot-demo' } } } }
このスクリプトは、アプリケーションのビルド プロセスと更新のデプロイ プロセスを指定します。実際のニーズに応じて変更します。
- トリガー ビルド
ビルド パラメーターとトリガー方法を構成した後、保存してビルドを手動でトリガーします。Jenkins は、構成されたプロセスに従ってアプリケーションを自動的にビルドし、デプロイします。
上記の手順により、Docker を使用して Spring Boot アプリケーションをコンテナ化し、継続的インテグレーションと継続的デプロイのプロセスを実現できます。このようにして、アプリケーションの開発、展開、管理を大幅に簡素化し、開発効率と展開の柔軟性を向上させることができます。
この記事が、Docker コンテナー化された Spring Boot アプリケーションの継続的インテグレーションと継続的デプロイメントを理解して実践するための参考になれば幸いです。練習の成功を祈っています!
以上がDocker を使用して Spring Boot アプリケーションをコンテナ化し、継続的統合と継続的デプロイメントを実現しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
