Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法

Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法

1. SpringBoootプロジェクトを作成し、jarパッケージにパッケージ化する

2. LinuxでDockerテストを行うためのフォルダを作成する

[root@izwz90lvzs7171wgdhul8az ~]# mkdir /root/docker_test

3. jarパッケージをLinuxにアップロードする

jarパッケージを保存するフォルダを作成する

[root@izwz90lvzs7171wgdhul8az docker_test]# mkdir /root/docker_test/jar

次に、XShellを使用してjarパッケージを上記のフォルダにアップロードします。

4. Dockerfileを書く

# Java イメージに基づいて新しいイメージを作成します FROM java:8
# 著者: MAINTAINER Howinfun
# jar パッケージをコンテナに追加し、名前を app.jar に変更します。
jar/app.jar /root/docker_test/app.jar を追加します。
# jar パッケージを実行します ENTRYPOINT ["nohup","java","-jar","/root/docker_test/app.jar","&"]

注: ADD 命令と COPY 命令は同じように使用されますが、唯一の違いは、ADD がアーカイブ ファイル (tar、gzip、bzip2 など) の抽出と解凍をサポートしていることです。また、COPY 命令でコピーする必要があるディレクトリは、Dockerfile ファイルと同じディレクトリに配置する必要があることにも注意してください。

5. 鏡を作る

ビルド 1.1 より前のバージョンの docker を実行しました。

コマンドパラメータ:

-t: 新しいイメージ名を指定します
.: Dockfileが現在のパスにあることを示します

Dockerfileファイルのパスがこのディレクトリにない場合、または別のファイル名の場合は、-fオプションを使用してDockerfileファイルのパスを個別に指定できます。

[root@izwz90lvzs7171wgdhul8az docker_test]# docker build -t sbdemo -f /root/docker_test/Dockerfile /root/docker_test/

コマンドパラメータ:

-f: 最初のパラメーターは Dockerfile のパス、2 番目のパラメーターは Dockerfile が配置されているフォルダーです。作成が完了したら、docker images コマンドを使用して、作成したイメージを表示します。

[root@izwz90lvzs7171wgdhul8az docker_test]# docker イメージ | grep sbdemo
sbdemo 最新 7efac46ef997 4時間前 686MB

6. コンテナを起動する

[root@izwz90lvzs7171wgdhul8az docker_test]# docker run -d -p 8888:8888 --name mysbdemo sbdemo:latest

コマンドパラメータ:

-d: バックグラウンドで実行
-p: ポート番号を公開的に指定する
--name: コンテナに名前を付ける

起動後、docker ps を通じて実行中のコンテナを表示できます。

[root@izwz90lvzs7171wgdhul8az docker_test]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
5096c8c7b36f sbdemo "nohup java -jar /ro?? 4 秒前 2 秒前 0.0.0.0:8888->8888/tcp mysbdemo

7. コンテナの起動ログを表示する

指定されたコンテナのログは、docker ログを通じて表示できます。

[root@izwz90lvzs7171wgdhul8az docker_test]# docker は mysbdemo をログに記録します

 . ____ _ __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|================|___/=/_/_/_/
 :: Spring Boot :: (v2.1.6.リリース)

2019-10-11 02:10:46.264 INFO 1 --- [ main] com.hyf.DatabaseApplication : PID 1 の 6d85ac5d8751 で DatabaseApplication v0.0.1-SNAPSHOT を開始しています (/root/docker_test/app.jar が / で root によって開始されました)
2019-10-11 02:10:46.267 DEBUG 1 --- [ main] com.hyf.DatabaseApplication : Spring Boot v2.1.6.RELEASE、Spring v5.1.8.RELEASE で実行中
2019-10-11 02:10:46.268 INFO 1 --- [ main] com.hyf.DatabaseApplication: アクティブなプロファイルが設定されていません。デフォルトのプロファイルに戻ります: default
2019-10-11 02:10:49.139 警告 1 --- [ main] omsmapper.ClassPathMapperScanner: 名前が「bookMapper」の MapperFactoryBean と「com.hyf.mapper.BookMapper」の mapperInterface をスキップします。同じ名前の Bean が既に定義されています。
2019-10-11 02:10:49.139 警告 1 --- [ main] omsmapper.ClassPathMapperScanner: '[com.hyf]' パッケージに MyBatis マッパーが見つかりません。設定を確認してください。
2019-10-11 02:10:49.246 INFO 1 --- [ main] .sdrcRepositoryConfigurationDelegate : 複数の Spring Data モジュールが見つかりました。厳密なリポジトリ構成モードに入ります。
2019-10-11 02:10:49.257 INFO 1 --- [ main] .sdrcRepositoryConfigurationDelegate : Spring Data リポジトリを DEFAULT モードでブートストラップしています。
2019-10-11 02:10:49.328 INFO 1 --- [ main] .sdrcRepositoryConfigurationDelegate : Spring Data リポジトリのスキャンが 39 ミリ秒で完了しました。リポジトリ インターフェイスが 0 個見つかりました。
2019-10-11 02:10:50.345 INFO 1 --- [ main] trationDelegate$BeanPostProcessorChecker : タイプ [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$2c6b335] の Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' は、すべての BeanPostProcessors による処理の対象ではありません (例: 自動プロキシの対象ではありません)
2019-10-11 02:10:51.255 INFO 1 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat がポート 8888 (http) で初期化されました
2019-10-11 02:10:51.359 INFO 1 --- [ main] o.apache.catalina.core.StandardService : サービスを開始しています [Tomcat]
2019-10-11 02:10:51.359 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : サーブレット エンジンを起動しています: [Apache Tomcat/9.0.21]
2019-10-11 02:10:51.778 INFO 1 --- [ main] oaccC[Tomcat].[localhost].[/] : Spring 組み込み WebApplicationContext を初期化しています
2019-10-11 02:10:51.779 INFO 1 --- [ main] osweb.context.ContextLoader: ルート WebApplicationContext: 初期化が 5104 ミリ秒で完了しました
2019-10-11 02:10:54.164 INFO 1 --- [ main] ossconcurrent.ThreadPoolTask​​Executor: ExecutorService 'applicationTaskExecutor' を初期化しています
2019-10-11 02:10:56.081 INFO 1 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat がポート 8888 (http) でコンテキスト パス '' で起動しました
2019-10-11 02:10:56.090 INFO 1 --- [ main] com.hyf.DatabaseApplication : DatabaseApplication を 11.49 秒で起動しました (JVM は 12.624 秒実行中)

8. アクセスインターフェース

コンテナが起動したら、Postman またはその他の http ツールを使用して、コンテナにデプロイされたアプリケーション インターフェイスにアクセスしてみます。

要約する

上記は、編集者が紹介した Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Dockerfile の CMD および ENTRYPOINT コマンドの詳細な説明
  • 最高のDockerfileを書く方法
  • Dockerfile の COPY コマンドと ADD コマンドの詳細な説明
  • Dockerfileイメージ構築ファイルとDockerの関連コマンドの詳細な紹介
  • Dockerfile を使用して MySQL イメージを構築し、データの初期化と権限設定を実装する詳細な説明
  • Dockerfile における ENV 命令の具体的な使用法の詳細な説明
  • Dockerfileの使用例
  • 公式 Tomcat イメージを作成するための Dockerfile とイメージの使用方法の詳細な説明
  • Dockerfile の一般的なコマンドの概要
  • Dockerfile を使用して Java ランタイム環境のミラーを作成する方法
  • Dockerfileを使用して独自のイメージを作成する方法
  • Dockerfile 命令 ADD と COPY の紹介
  • Dockerfileにおけるマルチステージ(マルチステージビルド)の詳しい説明
  • Docker の基礎: Dockerfile コマンドの詳細な説明
  • Dockerfile を使用して Node.js サービスをデプロイする方法
  • Dockerfile の手順の説明
  • Dockerfile命令VOLUMEの簡単な紹介
  • Dockerfileの簡単な紹介

<<:  MySQL デッドロックのトラブルシューティングの全プロセス記録

>>:  react+antdプロジェクトをゼロから構築する方法を教えます

推薦する

テーブルセルの幅tdの設定は無効であり、内部コンテンツによって常に引き伸ばされます

テーブルページを作成するときに、td に設定された幅が無効になることがあります。td の幅は常に内部...

MySQL 分離レベルの詳細な説明と例

目次MySQL の 4 つの分離レベルデータ テーブルを作成します。分離レベルの設定物事の分離レベル...

vue+elementui+vuex+sessionStorage を使用して履歴タグ メニューを実装するためのサンプル コード

一般的には、左側にメニューがあった後、ページの上部に履歴タブ メニューを追加する必要があります。他の...

Google 翻訳ツール: 多言語ウェブサイトを素早く実装

Google Chinaは、ウェブサイトやブログを素早く簡単に多言語化できる翻訳ツールをリリースした...

HTML面接の質問の要約

1. doctypeの役割、厳密モードと混合モードの違い、そしてその重要性1. 構文形式: <...

nginx でディレクトリ ホワイトリストと IP ホワイトリストを設定する方法

1. ディレクトリホワイトリストを設定する:指定されたリクエストパスに制限を設定しないでください。た...

MySQLの7種類のログの概要

MySQL には次のログ ファイルがあります。 1: 再実行ログ2: ロールバックログ(元に戻すログ...

...

MySql はコミットする必要がありますか?

MySQL が挿入などの操作を実行するときにコミットする必要があるかどうかは、ストレージ エンジン...

Vue-cliフレームワークはタイマーアプリケーションを実装します

技術的背景このアプリケーションは vue-cli フレームワークを使用し、カスタム コンポーネント ...

Ubuntu にグラフィック ドライバーが正常にインストールされたかどうかを確認する方法

次のコマンドを実行します: glxinfo | grep レンダリング結果が「はい」の場合、グラフィ...

MySql 学習ノートにおけるトランザクション分離レベルの詳細な説明

背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...

Vue+Openlayer をベースに geojson を動的に読み込む方法

1つ以上の機能をロードする <テンプレート> <div id="map&...

React のクラスからフックへの移行

目次リアクトフック序文なぜフックなのか?クラス関数クラスとフックの比較フックはコンポーネントの状態を...