Springboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法
Docker の 3 つの主要な概念: イメージ、コンテナ、ウェアハウスを理解しています。イメージはコンテナ操作の基礎です。一般的な開発プロセスは、基本イメージを取得することです。 Docker Hub から取得し、基本イメージに基づいて特定のカスタマイズされた開発 (アプリケーションをイメージに配置するなど) を実行し、新しいイメージを生成し、この新しいイメージに基づいてコンテナーを起動して、アプリケーションを実行します。
1. イメージを生成する 2 つの方法
Docker イメージを作成するには通常 2 つの方法があり、1 つは dockerfile 構成ファイルに基づき、docker build
を使用して実行されます。これは、最も推奨される本格的なイメージ作成方法です。2 つ目は、docker commit
のようなコマンドを使用して、変更されたコンテンツを含む新しいイメージを手動で生成する方法です。
1.1. commit を利用したイメージ生成
この方法は、イメージの構築内容を追跡できないこと、また、作業効率が悪く、大規模なイメージ生成には適していません。比較的低いですが、特定の一時的な状況、特に開発中やテスト中に、一時的に新しいソフトウェアをインストールする必要がある場合に、新しいイメージをすばやく生成できるので便利です。
ここでは、Golang に付属のイメージを生成する例を示し、コミットを使用してイメージを生成する方法を示します。
1.1.1. Centos ベース イメージをプルする
まず、Centos ベース イメージをプルする必要があり、Golang のインストールはこのベース イメージに基づいて行われます。
centos イメージの検索:
[root@node1 ~]# docker search centos INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/centos DEPRECATED; The official build of CentOS. 7529 [OK] docker.io docker.io/kasmweb/centos-7-desktop CentOS 7 desktop for Kasm Workspaces 33 docker.io docker.io/couchbase/centos7-systemd centos7-systemd images with additional deb... 7 [OK]
STARS の数が最も大きい公式イメージを取得します
[root@node1 ~]# docker pull centos Using default tag: latest Trying to pull repository docker.io/library/centos ... latest: Pulling from docker.io/library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for docker.io/centos:latest
1.1.2、Centos コンテナを起動して Go
[root@node1 ~]# docker run -it centos /bin/bash [root@311c53f54f2f /]# [root@311c53f54f2f /]# go version bash: go: command not found
[root@311c53f54f2f /]# yum install go Failed to set locale, defaulting to C.UTF-8 CentOS Linux 8 - AppStream 71 B/s | 38 B 00:00 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
[root@311c53f54f2f yum.repos.d]# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* [root@311c53f54f2f yum.repos.d]# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* [root@311c53f54f2f yum.repos.d]# yum clean all Failed to set locale, defaulting to C.UTF-8 0 files removed [root@311c53f54f2f yum.repos.d]# yum makecache Failed to set locale, defaulting to C.UTF-8 CentOS Linux 8 - AppStream 2.6 MB/s | 8.4 MB 00:03 CentOS Linux 8 - BaseOS 2.0 MB/s | 4.6 MB 00:02 CentOS Linux 8 - Extras 7.7 kB/s | 10 kB 00:01 Metadata cache created.
[root@311c53f54f2f yum.repos.d]# yum install go [root@311c53f54f2f yum.repos.d]# go version go version go1.16.12 linux/amd64
docker ps を使用して現在のコンテナーのコンテナー ID を表示します。ここでは
311c53f54f2fです。
[root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 311c53f54f2f centos "/bin/bash" 13 minutes ago Up 13 minutes
docker commit コマンドを使用して新しいイメージを生成します。
[root@node1 ~]# docker commit -a "lucas" -m "install golang" 311c53f54f2f centos-go:v1 sha256:019ab02d451defb75e2ee03948289ed008036ba7ec8a355cae28bdf7fbce07d2
docker image を再度使用して、centos-go we の新しいイメージを確認します。生成されました。
[root@node1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos-go v1 019ab02d451d 2 minutes ago 805 MB docker.io/busybox latest bab98d58e29e 8 days ago 4.86 MB docker.io/nginx latest 904b8cb13b93 13 days ago 142 MB docker.io/centos latest 5d0da3dc9764 18 months ago 231 MB
[root@node1 ~]# docker run -it centos-go:v1 /bin/bash
[root@daff0519f2ca /]# go version
go version go1.16.12 linux/amd64
ログイン後にコピー
1.2. Dockerfile を使用してイメージを生成しますDockerfile は Docker イメージの構築を含むテキスト ファイルですDocker イメージのビルド プロセスを自動化するための手順。 Dockerfile は、基本イメージ、依存関係のインストール、ファイルのコピー、環境変数の構成、起動コマンドなどの一連の命令を通じてイメージ構築プロセスを記述します。 Dockerfile の構文はシェル スクリプトに似た言語です。 Dockerfile には、イメージの基本情報、メンテナ情報、イメージ操作コマンド、コンテナ起動コマンドの 4 つの部分が含まれています。 Dockerfile では、# で始まるコメントを使用して、命令の機能を説明したり、その他のコメント情報を提供したりできます。 以下は一般的な Dockerfile コマンドの一部です: [root@node1 ~]# docker run -it centos-go:v1 /bin/bash [root@daff0519f2ca /]# go version go version go1.16.12 linux/amd64
- FROM: 基本イメージを指定します (例:
FROM ubuntu:latest
)。FROM ディレクティブは次のとおりです。コメントに加えてください 予期しない最初のコマンド、その後にメンテナ情報コマンドが続きます。
- MAINTAINER:
MAINTAINER lucas
などのメンテナの情報を指定します。
- RUN:
RUN apt-get update && apt-get install -y nginx
などのイメージ内のコマンドを実行します。
- CMD: CMD ["nginx", "-g", "daemon off;"] など、コンテナーの起動時に実行するコマンドを指定します。
- EXPOSE: コンテナがリッスンするポートを宣言します (
EXPOSE 80
など)。
- ENV:
ENV NODE_ENVproduction
などの環境変数を設定します。
- ADD: ファイルを画像にコピーします (例:
ADD app.js /app.js
)。
- COPY: ファイルを画像にコピーします (例:
COPY app.js /app.js
)。
- WORKDIR: 作業ディレクトリを設定します (例:
WORKDIR /app
)。
- USER:
USER nginx
など、コンテナの起動時に使用するユーザーを設定します。
- VOLUME:
VOLUME /data
のように、コンテナー データ ボリュームを宣言します。
- ENTRYPOINT: コンテナの起動時に実行するコマンドを指定します (例:
ENTRYPOINT ["nginx", "-g", "daemon off;"]
) 。
docker build を使用してイメージをビルドします。
docker build コマンドは、さまざまなパラメーターを指定してビルド プロセスをカスタマイズできます。たとえば、
--no-cache オプションを使用して、イメージのビルド時に Docker がキャッシュを使用しないように強制したり、
--build-arg オプションを使用してビルド中に必要な環境変数。
docker build --help コマンドを使用して、使用可能なすべてのオプションを表示できます。
2.1、准备springboot应用jar包
我们准备一个基于springboot开发的应用服务,这个服务开放8080端口,访问是返回一个用户的姓名信息。
为了方便,可以使用spring initializr 在线生成demo代码,在demo代码的基础上开发一个controller返回一个User对象的name信息,由于这块代码比较简单,这里就不详述过程了。
代码完成以后使用mvn clean package
进行打包,这里打包成功以后生成了demo-0.0.1-SNAPSHOT.jar,我们使用java -jar demo-0.0.1-SNAPSHOT.jar
就可以运行这个应用程序。
2.2、编写Dockerfile
在项目根目录下创建一个名为Dockerfile
的文件,并在其中添加以下内容:
FROM openjdk:18-jdk-alpine MAINTAINER lucas COPY target/demo-0.0.1-SNAPSHOT.jar /usr/app/ WORKDIR /usr/app EXPOSE 8080 ENTRYPOINT ["java", "-jar", "demo-0.0.1-SNAPSHOT.jar"]
在上面的Dockerfile中,FROM
指令指定了基础镜像为openjdk:18-jdk-alpine
,COPY
指令将构建好的可执行jar包复制到容器中,WORKDIR
指令设置工作目录为/usr/app
,EXPOSE
指令指定了容器运行的端口为8080
,ENTRYPOINT
指令指定了容器启动时要执行的命令为java -jar demo-0.0.1-SNAPSHOT.jar
。
在终端中进入项目根目录,然后执行以下命令构建镜像:
docker build -t demo:latest .
其中,-t
参数指定了镜像的名称和版本号,.
参数指定了Dockerfile所在的目录。
[root@node1 docker]# docker build -t demo:latest . Sending build context to Docker daemon 51.05 MB Step 1/6 : FROM openjdk:18-jdk-alpine ---> c89120dcca4c Step 2/6 : MAINTAINER lucas ---> Running in 3d0ae6d2a813 ---> 085b9066ca7b Removing intermediate container 3d0ae6d2a813 Step 3/6 : COPY target/demo-0.0.1-SNAPSHOT.jar /usr/app/ ---> c5c77f80f179 Removing intermediate container 00228e4b0aed Step 4/6 : WORKDIR /usr/app ---> bdb555e3fb18 Removing intermediate container 35682266f140 Step 5/6 : EXPOSE 8080 ---> Running in 499d9888fa01 ---> 0fca023e8f23 Removing intermediate container 499d9888fa01 Step 6/6 : ENTRYPOINT java -jar demo-0.0.1-SNAPSHOT.jar ---> Running in 661fdaafa31d ---> 61e80950d665 Removing intermediate container 661fdaafa31d Successfully built 61e80950d665
可以看到构建成功,使用docker images
可以查看到构建成功的镜像。
三、运行容器服务,验证镜像的可用性
以上步骤已经使用docker build生成了镜像,接下来就可以使用这个镜像启动容器,启动后会自动启动应用程序。
在终端中执行以下命令启动容器:
docker run -d -p 8080:8080 demo:latest
其中,-d
参数指定了容器在后台运行,-p
参数指定了容器的端口映射,demo:latest
参数指定了要运行的镜像名称和版本号。
访问对应的web服务进行访问验证,结果如下:
以上がSpringboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivotal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

この記事では、dubbo+nacos+Spring Boot の実際の開発について詳しく説明する例を書きます。この記事では理論的な知識はあまり取り上げませんが、dubbo を nacos と統合して開発環境を迅速に構築する方法を説明する最も簡単な例を書きます。

JavaAPI 開発における Web サーバー処理に Jetty7 を使用する インターネットの発展に伴い、Web サーバーはアプリケーション開発の中核部分となり、多くの企業でも注目を集めています。増大するビジネス ニーズを満たすために、多くの開発者が Web サーバー開発に Jetty の使用を選択しており、その柔軟性と拡張性は広く認識されています。この記事では、JavaAPI 開発における Jetty7 の使用方法を紹介します。

顔面遮蔽弾幕とは、映像内の人物を遮ることなく大量の弾幕が浮遊し、人物の背後から浮遊しているように見せることです。機械学習は数年前から普及していますが、これらの機能がブラウザでも実行できることは多くの人に知られていません。この記事では、ビデオ連発における実際的な最適化プロセスを紹介します。記事の最後に、適用可能なシナリオをいくつか示します。このソリューションを開くことを望んでいます。いくつかのアイデアがあります。 mediapipeDemo (https://google.github.io/mediapipe/) は、顔ブロック弾幕のオンデマンドアップアップロードの主流の実装原理を示していますサーバーのバックグラウンド計算により、ビデオ画面内のポートレート領域を抽出し、SVG ストレージに変換しますクライアントがビデオを再生している間、サーバーから SVG をダウンロードし、弾幕、ポートレートと組み合わせる

フォーム検証は Web アプリケーション開発において非常に重要なリンクであり、フォーム データを送信する前にデータの有効性をチェックして、アプリケーションのセキュリティ脆弱性やデータ エラーを回避できます。 Web アプリケーションのフォーム検証は、Golang を使用すると簡単に実装できます。この記事では、Golang を使用して Web アプリケーションのフォーム検証を実装する方法を紹介します。 1. フォーム検証の基本要素 フォーム検証の実装方法を紹介する前に、フォーム検証の基本要素が何であるかを知る必要があります。フォーム要素: フォーム要素は

Cockpit は、Linux サーバー用の Web ベースのグラフィカル インターフェイスです。これは主に、初心者/熟練ユーザーにとって Linux サーバーの管理を容易にすることを目的としています。この記事では、Cockpit アクセス モードと、CockpitWebUI から Cockpit への管理アクセスを切り替える方法について説明します。コンテンツ トピック: コックピット エントリ モード 現在のコックピット アクセス モードの確認 CockpitWebUI からコックピットへの管理アクセスを有効にする CockpitWebUI からコックピットへの管理アクセスを無効にする まとめ コックピット エントリ モード コックピットには 2 つのアクセス モードがあります。 制限付きアクセス: これは、コックピット アクセス モードのデフォルトです。このアクセス モードでは、コックピットから Web ユーザーにアクセスできません。

Web 標準は、W3C およびその他の関連組織によって策定された一連の仕様とガイドラインです。HTML、CSS、JavaScript、DOM、Web アクセシビリティおよびパフォーマンスの最適化の標準化が含まれます。これらの標準に従うことで、ページの互換性を向上させることができます。 、メンテナンス性とパフォーマンス。 Web 標準の目標は、Web コンテンツをさまざまなプラットフォーム、ブラウザー、デバイス上で一貫して表示および操作できるようにして、より優れたユーザー エクスペリエンスと開発効率を提供することです。

PHP は Web 開発のバックエンドに属します。 PHP はサーバー側のスクリプト言語であり、主にサーバー側のロジックを処理し、動的な Web コンテンツを生成するために使用されます。フロントエンド テクノロジーと比較して、PHP はデータベースとの対話、ユーザー リクエストの処理、ページ コンテンツの生成などのバックエンド操作に多く使用されます。次に、特定のコード例を使用して、バックエンド開発における PHP のアプリケーションを説明します。まず、データベースに接続してデータをクエリするための簡単な PHP コード例を見てみましょう。
