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

推薦する

Antd+vueは円形属性フォームの動的検証のアイデアを実現します

必要な項目をループして検証するために、クエリ フォームのいくつかのプロパティを実装したいと考えていま...

MySQLの分離レベルとロックメカニズムの詳細な説明

目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...

Vue の 4 つのカスタム命令の説明と使用例

4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...

Macでのファイル権限の表示と設定の詳細な説明

序文Mac システムのターミナルでファイルの権限を変更するには、Linux の chmod コマンド...

Centos8でdockerがインストールできない問題の解決方法

問題 [root@zh ~]# [root@zh ~]# [root@zh ~]# yum -y d...

1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント

SQLはテーブル内の重複レコードをすべて見つけます1. テーブルには id と name の 2 つ...

検証例 MySQL | 同じ値を持つフィールドを更新すると、binlog に記録されます

1. はじめに数日前、開発仲間から、フィールドを同じ値に更新すると binlog が記録されるかどう...

ウェブページのグリッドデザインを考える

<br />元のアドレス: http://andymao.com/andy/post/8...

Vue はフォームデータ検証のサンプルコードを実装します

el-form フォームにルールを追加します。データにルールを定義する定義されたルールをel-for...

Centos 7 システムの Tomcat サーバーの詳細な分析

目次1. tomcatの起源1. Tomcat アプリケーションのシナリオ2. Tomcatに必要な...

Alibaba Cloud に Docker をインストールする際の問題と解決策

質問Alibaba Cloud イメージを使用して Docker をインストールすると、次の図に示す...

JSは文字列内の指定された文字列のn番目の出現位置を取得します

文字の位置を取得するための同様の方法について学習します。 charAt() 文字列内の指定された位置...

DockerコンテナにRedisをデプロイする手順の紹介

目次1 つの Redis 設定ファイル2 Dockerコマンドの開始3 docker-compose...

HTMLヘッダータグの使用に関する詳細な説明

HTMLはヘッドとボディの2つの部分で構成されています** ヘッド内のタグはヘッドタグです** タイ...

CSS で画像アダプティブ コンテナを実装するいくつかの方法 (要約)

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...