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プロジェクトをゼロから構築する方法を教えます

推薦する

Vue イベントの $event パラメータ = イベント値の場合

テンプレート <el-table :data="データリスト"> &...

CSS3 で transform を使用した場合のフォントぼかしの解決方法の詳細な説明

この質問は非常に奇妙なので、あまり多くを語らずにコードに直接進みます。 .g-ダイアログラッパー{ ...

mysql 一時テーブルの使用状況の分析 [クエリ結果は一時テーブルに保存できます]

この記事では、例を使用して MySQL 一時テーブルの使用方法を説明します。ご参考までに、詳細は以下...

Mongodb の GUID 表示の問題の詳細な分析

問題を見つける最近、プログラムのストレージを Mongodb に移行したところ、Guid 型が書き込...

Javascript 仮想 DOM の詳細な説明

目次仮想DOMとは何ですか?なぜ仮想DOMが必要なのでしょうか?仮想 DOM はどのようにして実際の...

React Fiber構造の作成手順

目次リアクトファイバーの作成1. 始める前に2. React.renderから始める3. 終了リアク...

Dockerの高可用性構成の詳細な説明

Docker の作成Docker Compose は、管理対象コンテナをプロジェクト、サービス、コン...

Ubuntu 20.04 デスクトップのインストールとルート権限の有効化および SSH インストールの詳細

記事は主にUbuntu 20.04の簡単なインストールプロセスを記録し、インストール後に国内ソースを...

HTML メタの説明

導入メタタグは、HTML言語のHEAD領域にある補助タグです。 meta は、ページの説明、キーワー...

ffmpeg コマンドラインを使用してビデオを変換するためのサンプルコード

この記事の本文を始める前に、まず ffmpeg プログラムをインストールする必要があります (Lin...

Vueはタブ切り替えの虫眼鏡効果を実装します

この記事では、タブ切り替えの虫眼鏡効果を実現するためのVueの具体的なコードを例として紹介します。具...

Vueはドラッグアンドドロップまたはクリックで写真をアップロードする機能を実装しています

この記事では、ドラッグアンドドロップやクリックによる画像のアップロードを実現するためのVueの具体的...

スタックメニューを実装するためのjQueryプラグイン

jQueryプラグインの毎日の積み重ねメニュー、参考までに、具体的な内容は次のとおりです。スタックメ...

jsを使用してシンプルなカルーセル効果を実現する

この記事では、シンプルなカルーセル効果を実現するためのjsの具体的なコードを参考までに紹介します。具...

UbuntuからMySQLを削除して再インストールする方法

まずmysqlを削除します: sudo apt-get remove mysql-*残ったデータをク...