Dockerを使用してSpring Bootプロジェクトをデプロイする手順

Dockerを使用してSpring Bootプロジェクトをデプロイする手順

シンプルなSpringbootプロジェクトを作成する

1. pom.xmlでSpring Boot 2.2.10関連の依存関係を使用する

<親>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <バージョン>2.2.10.RELEASE</バージョン>
</親>

2. Webとテストの依存関係を追加する

<依存関係>
     <依存関係>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
    </依存関係>
 <依存関係>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>テスト</scope>
 </依存関係>
</依存関係>

3. hello()メソッドを含むDockerControllerを作成し、アクセスするとhello,nihaoを返します。

@レストコントローラ
パブリッククラスDockerController {
 
    @RequestMapping("/hello")
    パブリック文字列hello() {
        「hello,nihao」を返します。
    }
}

4. スタートアップクラス

@SpringBootアプリケーション
パブリッククラスDockerApplication {

 パブリック静的voidメイン(String[] args) {
  SpringApplication.run(DockerApplication.class、引数);
 }
}

追加したら、プロジェクトを起動します。起動に成功したら、ブラウザで http://localhost:8080/hello にアクセスします。ページには hello,nihao が返され、Spring Boot プロジェクトが正常に構成されていることが示されます。

Dockerを使用してSpring Bootプロジェクトをデプロイする

1. プロジェクトをjarパッケージにパッケージ化し、サーバーにコピーしてテストします。

[root@jiangwang springbootDemo]# ls
demo-0.0.1-SNAPSHOT.jar Dockerファイル
[root@jiangwang springbootDemo]# java -jar demo-0.0.1-SNAPSHOT.jar 

  . ____ _ __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
  ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|================|___/=/_/_/_/
 :: Spring Boot :: (v2.2.10.RELEASE)

2021-03-18 14:49:18.241 INFO 12886 --- [ main] com.example.demo.DemoApplication : PID 12886 の jiangwang で DemoApplication v0.0.1-SNAPSHOT を開始しています (/home/springbootDemo/demo-0.0.1-SNAPSHOT.jar が /home/springbootDemo で root によって開始されました)
2021-03-18 14:49:18.244 INFO 12886 --- [ main] com.example.demo.DemoApplication: アクティブなプロファイルが設定されていません。デフォルトのプロファイルにフォールバックします: default
2021-03-18 14:49:19.924 INFO 12886 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat がポート 8080 (http) で初期化されました
2021-03-18 14:49:19.938 INFO 12886 --- [ main] o.apache.catalina.core.StandardService : サービスを開始しています [Tomcat]
2021-03-18 14:49:19.938 INFO 12886 --- [ main] org.apache.catalina.core.StandardEngine : サーブレット エンジンを起動しています: [Apache Tomcat/9.0.38]
2021-03-18 14:49:20.013 INFO 12886 --- [ main] oaccC[Tomcat].[localhost].[/] : Spring 埋め込み WebApplicationContext を初期化しています
2021-03-18 14:49:20.014 INFO 12886 --- [ main] wscServletWebServerApplicationContext: ルート WebApplicationContext: 初期化が 1657 ミリ秒で完了しました
2021-03-18 14:49:20.321 INFO 12886 --- [ main] ossconcurrent.ThreadPoolTask​​Executor: ExecutorService 'applicationTaskExecutor' を初期化しています
2021-03-18 14:49:20.520 INFO 12886 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat がポート 8080 (http) でコンテキスト パス '' で起動しました
2021-03-18 14:49:20.523 INFO 12886 --- [ main] com.example.demo.DemoApplication : DemoApplication を 2.899 秒で開始しました (JVM は 3.369 秒実行中)

2. Spring Boot の起動ログを見ると、環境設定に問題がないことがわかります。Dockerfile ファイルを編集します。

java:8より
*.jar /app.jar をコピーする

コマンド ["--server.port=8080"]

エクスポーズ8080

エントリポイント ["java","-jar","/app.jar"]

3. 次に、Dockerfile を使用してイメージをビルドします。

## イメージ [root@jiangwang springbootDemo] をビルドします# docker build -t springboot-demo 。
ビルド コンテキストを Docker デーモンに送信 17.72 MB
ステップ 1/5: java:8 から
 ---> d23bdf5b1b1b
ステップ 2/5: *.jar /app.jar をコピーする
 ---> f4d6aeabd3f0
ステップ 3/5: CMD ["--server.port=8080"]
 ---> a6311f7cf7b5 で実行中
中間コンテナ a6311f7cf7b5 を削除しています
 ---> d8117b10cefa
ステップ4/5: EXPOSE 8080
 ---> ae180be637bb で実行中
中間コンテナ ae180be637bb を削除しています
 ---> f16702c75ab6
ステップ 5/5: ENTRYPOINT ["java","-jar","/app.jar"]
 ---> fafa00625666 で実行中
中間コンテナ fafa00625666 を削除しています
 ---> d4c3e225699d
正常に構築されました d4c3e225699d
springboot-demo:latest のタグ付けに成功しました

4. イメージを実行します。

# イメージ [root@jiangwang springbootDemo] を実行します。# docker run -d -p 39005:8080 --name my-springboot springboot-demo
7ac35852cb91cb10612cd28fdbe7c50c7c59df4cccf19b2f1d30dcabbfe501f4
[root@jiangwang springbootDemo]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
7ac35852cb91 springboot-demo "java -jar /app.jar …" 33 秒前 32 秒前 0.0.0.0:39005->8080/tcp my-springboot
[root@jiangwang springbootDemo]# curl localhost:39005/hello
こんにちは、nihao[root@jiangwang springbootDemo]# 

5. ブラウザに外部ネットワークの URL を入力してアクセスします。

ここでは、外部ネットワークポート39005を最初に開く必要があります。セキュリティグループ設定に移動できます。

これは、Spring Boot プロジェクトが Docker を使用して正常にデプロイされたことを示しています。

これで、Docker を使用して Spring Boot プロジェクトをデプロイする実装手順に関するこの記事は終了です。Docker を使用した Spring Boot のデプロイの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • Docker を使用して Spring Boot アプリケーションをデプロイする例
  • Dockerを使用してSpringBootプロジェクトをデプロイする方法
  • Docker を使用して Spring Boot Maven アプリケーションをデプロイする方法
  • アイデアに基づいてSpringbootプロジェクトをDockerにデプロイする
  • Mac 上の Docker に springBoot プロジェクトをデプロイする (デモ)
  • Spring Boot と Docker を使用してマイクロサービスをデプロイする方法

<<:  HTML ページにミュージック ビデオを追加する例

>>:  CSS3で作られたレインボーボタンスタイル

推薦する

MySQL マスタースレーブレプリケーションの実践の詳細説明 - ログポイントに基づくレプリケーション

ログポイントベースのレプリケーション1. マスターデータベースとスレーブデータベースに専用のレプリケ...

JavaScript の for ループと二重 for ループの詳細な説明

forループfor ループは配列の要素をループします。文法: for (初期化変数; 条件式; 繰り...

集める価値のある 15 個の JavaScript 関数

目次1. 数字を逆にする2. 配列内の最大のn個の数値を取得する3. 階乗を計算する4. 現在の動作...

ボタンと入力タイプの違いと注意点

<button> タグ<br />定義と使用法<button> ...

リンク更新ページと js 更新ページの使用例

1. リンクの使用方法:コードをコピーコードは次のとおりです。 <a href="j...

MySQLの暗黙的な変換について話す

作業の過程で、暗黙的な変換が発生するケースが数多くあります。暗黙的な変換は、クエリの速度低下を引き起...

Linux コマンドラインで電卓を使用する 5 つのコマンド

みなさんこんにちは。私は梁旭です。 Linux を使用するときに、計算を行う必要がある場合があり、そ...

Bash の山括弧の深い理解 (初心者向け)

序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...

uniapp vue および nvue カルーセル コンポーネントのサンプル コード

vueの部分は以下のとおりです。 <テンプレート> <ビュークラス="&...

音楽プレーヤーアプリ(アプリケーションソフトウェア)の分析と再設計 美しい音楽プレーヤーインターフェースの設計方法

無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...

JS にこれがあるのはなぜですか?

目次1. 需要2. 解決策3. 最初の改善4.砂糖を加える5. 理解不能6. 問題点7. オブジェク...

MySQL エラー 1290 (HY000) の解決方法

私は長い間問題に取り組み、文法上の問題を何度も確認しました。しかし、後でネットで調べてみたら、突然理...

CSS でフローティングにより親要素の高さが崩れる問題を解決するいくつかの方法

以前は、フロートはレイアウトによく使用されていましたが、フローティングレイアウトを使用すると親要素の...

MySQL での数値のフォーマットの詳細な説明

最近、仕事の都合で、MySQL で数字をフォーマットする必要がありましたが、インターネット上にはほと...

ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

一般的なゲストブック、フォーラムなどでは、テキスト入力ボックスが使われています。これは HTML 言...