目次
1. イメージを生成する 2 つの方法
1.1. commit を利用したイメージ生成
1.1.1. Centos ベース イメージをプルする
1.1.2、Centos コンテナを起動して Go
2.1、准备springboot应用jar包
2.2、编写Dockerfile
三、运行容器服务,验证镜像的可用性
ホームページ Java &#&チュートリアル Springboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法

Springboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法

May 19, 2023 pm 02:10 PM
web springboot

    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
    ログイン後にコピー
    # をインストールします##here これは、基本的な centos には golang が存在しないことを証明しています。

    yum を使用して golang をインストールすると、次のエラー メッセージが見つかりました。

    [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
    ログイン後にコピー

    これは yum ソースの問題が原因であり、次のコマンドを実行することで解決できます:

    [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.
    ログイン後にコピー

    Golang は正常にインストールされます

    [root@311c53f54f2f yum.repos.d]# yum install go
    [root@311c53f54f2f yum.repos.d]# go version
    go version go1.16.12 linux/amd64
    ログイン後にコピー

    1.1.3. 新しいイメージの生成をコミットします
    最初に

    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
    ログイン後にコピー

    1.1.4. 新しいイメージを使用して Golang 環境を確認します
    [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 コマンドの一部です:

    • 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;"]) 。

    これらの一般的なコマンドに加えて、Dockerfile には他のコマンドも使用できます。詳細については、Docker の公式ドキュメントを参照してください。

    dockerfile の構成が完了したら、

    docker build を使用してイメージをビルドします。 docker build コマンドは、さまざまなパラメーターを指定してビルド プロセスをカスタマイズできます。たとえば、--no-cache オプションを使用して、イメージのビルド時に Docker がキャッシュを使用しないように強制したり、--build-arg オプションを使用してビルド中に必要な環境変数。 docker build --help コマンドを使用して、使用可能なすべてのオプションを表示できます。

    2. Dockerfile に基づいて springboot イメージを生成する

    ここでは、dockerfile を使用して springboot Web アプリケーション イメージを構築し、docker を使用してコンテナーを起動する方法を示します。

    2.1、准备springboot应用jar包

    我们准备一个基于springboot开发的应用服务,这个服务开放8080端口,访问是返回一个用户的姓名信息。

    为了方便,可以使用spring initializr 在线生成demo代码,在demo代码的基础上开发一个controller返回一个User对象的name信息,由于这块代码比较简单,这里就不详述过程了。

    Springboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法

    代码完成以后使用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-alpineCOPY指令将构建好的可执行jar包复制到容器中,WORKDIR指令设置工作目录为/usr/appEXPOSE指令指定了容器运行的端口为8080ENTRYPOINT指令指定了容器启动时要执行的命令为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 可以查看到构建成功的镜像。

    Springboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法

    三、运行容器服务,验证镜像的可用性

    以上步骤已经使用docker build生成了镜像,接下来就可以使用这个镜像启动容器,启动后会自动启动应用程序。

    在终端中执行以下命令启动容器:

    docker run -d -p 8080:8080 demo:latest
    ログイン後にコピー

    其中,-d参数指定了容器在后台运行,-p参数指定了容器的端口映射,demo:latest参数指定了要运行的镜像名称和版本号。

    访问对应的web服务进行访问验证,结果如下:

    Springboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法

    以上がSpringboot Web アプリケーション イメージを構築し、コンテナーを使用してデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

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

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

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

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    SpringBootとSpringMVCの比較と差異分析 SpringBootとSpringMVCの比較と差異分析 Dec 29, 2023 am 11:02 AM

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

    SpringBoot+Dubbo+Nacos開発実践チュートリアル SpringBoot+Dubbo+Nacos開発実践チュートリアル Aug 15, 2023 pm 04:49 PM

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

    Java API開発におけるWebサーバー処理にJetty7を使用する Java API開発におけるWebサーバー処理にJetty7を使用する Jun 18, 2023 am 10:42 AM

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

    ウェブ上の顔面ブロック攻撃に対するリアルタイム保護 (機械学習に基づく) ウェブ上の顔面ブロック攻撃に対するリアルタイム保護 (機械学習に基づく) Jun 10, 2023 pm 01:03 PM

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

    Golang を使用して Web アプリケーションのフォーム検証を実装する方法 Golang を使用して Web アプリケーションのフォーム検証を実装する方法 Jun 24, 2023 am 09:08 AM

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

    コックピット Web UI から管理アクセスを有効にする方法 コックピット Web UI から管理アクセスを有効にする方法 Mar 20, 2024 pm 06:56 PM

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

    ウェブ標準とは何ですか? ウェブ標準とは何ですか? Oct 18, 2023 pm 05:24 PM

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

    PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? Mar 24, 2024 pm 02:18 PM

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

    See all articles