前提条件: 1. Docker サーバーでリモート アクセスが有効になっています。「証明書接続によるリモート Docker サーバー」を参照してください。 2. サーバー上に k8s クラスターが構築されています。この記事では、テストに k8s シングルポイント クラスターを使用します。 前回の記事では、idea docker プラグインを介してリモート docker サーバーに正常にアクセスできることをテストしました。この docker プラグインを使用して docker イメージをパッケージ化してプッシュすることもできますが、この記事では、Maven の docker-maven-plugin プラグインを使用して docker イメージをパッケージ化し、リモート docker サーバーにプッシュする別の方法を使用します。 1. DockerファイルDockerfileファイルは、アプリケーションをDockerイメージにするために使用されます。 # jdk 環境のバージョンを指定して、java8 をベースにイメージを作成します。FROM java:8 # 一時ディレクトリ VOLUME /tmp をマウントします # 指定された jar パッケージをコンテナに追加します [これは、プロジェクトのパッケージ化によって生成された jar パッケージの完全な名前です] practice-job-0.0.1-SNAPSHOT.jar /practice-job.jar を追加します。 # コンテナによって公開されるポート番号(プロジェクトによって占有されるポート番号を参照) エクスポーズ8081 # コンテナの起動後に実行されるコマンド ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/practice-job.jar" ] 2. pom設定pom ファイルの関連構成は次のとおりです。リモート サーバーの IP アドレスを入力し、上記の Dockerfile のパスと、リモート Docker にアクセスするために必要な pem 証明書ファイルのパスを指定することに注意してください。 <ビルド> <プラグイン> <プラグイン> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </プラグイン> <!--docker-maven-plugin プラグインを使用してサービスをイメージにパッケージ化し、docker サーバーに送信します--> <プラグイン> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <バージョン>1.2.2</バージョン> <!-- プラグインを特定のフェーズにバインドして実行します --> <処刑> <実行> <id>ビルドイメージ</id> <!-- プラグインをパッケージ フェーズにバインドします。つまり、ユーザーは mvn package を実行するだけで、自動的に mvn docker:build が実行されます --> <phase>パッケージ</phase> <目標> <goal>ビルド</goal> </目標> </実行> </処刑> <構成> <forceTags> 真</forceTags> <!-- 生成されるイメージ名を指定します。生成するイメージ名に変更します。 --> <imageName>練習問題</imageName> <!--タグを指定--> <画像タグ> <imageTag>最新</imageTag> </画像タグ> <!-- Dockerfile パスを指定します --> <dockerディレクトリ>${project.basedir}</dockerディレクトリ> <!-- リモート Docker アドレスを指定します --> <dockerHost>https://パブリックネットワークIP:2376</dockerHost> <!--pem 証明書ファイルのパス アドレスを指定します--> <dockerCertPath>${project.basedir}/src/main/resources/pem</dockerCertPath> <!-- 以下は、jar パッケージを docker コンテナの指定されたディレクトリにコピーするための構成です --> <リソース> <リソース> <ターゲットパス>/</ターゲットパス> <!--jar パッケージが配置されているパスはターゲット ディレクトリに対応します --> <ディレクトリ>${project.build.directory}</ディレクトリ> <!-- Dockerfile に追加されたファイル名に対応する、含める必要のある jar パッケージ --> <include>${project.build.finalName}.jar</include> </リソース> </リソース> </構成> </プラグイン> </プラグイン> </ビルド> 3. イメージプッシュ上記の準備が完了したら、インストールコマンドを実行します。しばらく待つと、以下のコンソールに BUILD SUCCESS と表示され、イメージのプッシュが成功したことが示されます。 次に、リモート サーバーに移動して確認し、docker images コマンドを入力してコンテナー イメージを表示します。 アプリケーション イメージが正常にプッシュされたことがわかります。次のステップはデプロイメント ステージです。 4. k8s デプロイメントこれまで、デプロイメント環境に Docker コンテナしかなかったのであれば、ここではアプリケーション イメージを docker で実行し、プロジェクトを Docker コンテナにデプロイしてアクセスするだけで済みます。しかし、現在のデプロイメント環境は k8s+docker なので、デプロイメント用にアプリケーション イメージを直接実行することはできません。k8s デプロイメントに進みましょう。 まず、practice-job-deployment.yaml と practice-job-service.yaml という 2 つの yaml ファイルを作成する必要があります。これら 2 つのファイルの機能には、k8s の概念が関係しています。k8s の概念については、以降の記事で説明します。ここでは、k8s のほとんどの構成が yaml ファイルに基づいて定義されていることを知っておくだけで十分です。 vi 実践ジョブデプロイメント.yaml APIバージョン: v1 種類: 名前空間 メタデータ: 名前: 練習 --- APIバージョン: アプリ/v1 種類: デプロイメント メタデータ: 名前: 実践的なジョブ展開 名前空間: 練習 仕様: レプリカ: 1 セレクタ: 一致ラベル: アプリ: practice-job-pod テンプレート: メタデータ: ラベル: アプリ: practice-job-pod 仕様: ホストネットワーク: true コンテナ: - 名前: 練習ジョブコンテナ image: practice-job:latest #イメージ名 + バージョンimagePullPolicy: Never #イメージのソースを示します。NotPresent がローカルで利用できない場合は、ハブ ウェアハウスからプルされます。Never はローカル ポートからのみを意味します。 - コンテナポート: 8081 環境: # ログファイルのパスを指定します - 名前:logging.path 値: /var/logs vi 練習ジョブサービス.yaml APIバージョン: v1 種類: サービス メタデータ: 名前: 実践ジョブサービス 名前空間: 練習 ラベル: アプリ: 練習ジョブサービス 仕様: タイプ: NodePort セレクタ: アプリ: practice-job-pod ポート: - 名前: http プロトコル: TCP port: 8081 #サービス(内部)ポート targetPort: 8081 #ポッドポート nodePort: 32001 #サービス(外部)ポート 次に、コマンドを個別に実行します。 kubectl apply -f 実践ジョブのデプロイメント.yaml kubectl apply -f 練習ジョブサービス.yaml コマンドを実行します: kubectl get pod --all-namespaces。ポッドを確認すると、プロジェクトのポッドが正常に実行されたことがわかります。 アプリケーションの実行ログを表示するには、kubectl logs practice-job-deployment-77d685767-glvgm -n practice コマンドを実行します。形式は次のとおりです: kubectl logs <pod name> -n <pod namespace>。 コマンドを実行します: docker ps プロジェクトがすでにコンテナ内で実行されていることがわかります コマンド kubectl get service --all-namespaces を実行します。アプリケーションに対応するサービスが正常に開始され、公開されているポートが 32001 であることがわかります。これは、先ほど yaml ファイルで構成したポートです。 最後に、ブラウザはパブリック ネットワーク IP:32001/doc.html にアクセスします。このパスは私のプロジェクト専用であり、プロジェクトによってパスは異なります。ファイアウォールで対応するポートを開く必要があることに注意してください。 この時点で、アプリケーションはローカルの Docker イメージからパッケージ化され、サーバーにプッシュされ、その後 k8s+docker コンテナーにデプロイされます。 これで、docker イメージをパッケージ化してリモート サーバーにプッシュし、k8s にデプロイする手順に関するこの記事は終了です。より関連性の高い docker イメージのパッケージ化と k8s へのデプロイについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 最もよく使用されるJavaScriptイベントについて詳しく学ぶ
会社のビジネスシナリオでは、WeChat アカウント分割機能を使用する必要があります。公式 Web ...
この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...
構造関連タグ--------------------------------------------...
序文Vue には、v-if、v-bind、v-on などの豊富な組み込みディレクティブが用意されてい...
データベースの統計を行う場合、多くの場合、年、月、日に基づいてデータを収集し、echart を使用し...
序文私が作成中の Markodwn エディターに同期スクロール機能を追加する必要があります。Baid...
Centos や Ubuntu など、Docker が pull する Base イメージは最もシン...
前回の記事ではMySql8.0.19のインストール手順を紹介しました。必要な方はクリックしてご覧くだ...
基礎リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジ...
Spring jdbc のデータベース操作オブジェクト モデルの詳細な例Spring Jdbc デー...
<br />原文: http://uicom.net/blog/?p=762 Faceb...
Taobao用の空白スペースを作成します。 ブラウザページを縮小すると、コンテンツ領域は縮小されませ...
目次概要1. URL経由でダウンロード2. aタグのダウンロード属性とblobコンストラクタを組み合...
Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒントbashに詳しい人なら、hi...
WIN10 64ビットに最新のMySQL8.0.18をインストールダウンロード公式サイトから最新バ...