Linux システム Docker への ASP.NET Core アプリケーションのデプロイのプロセス分析

Linux システム Docker への ASP.NET Core アプリケーションのデプロイのプロセス分析

1. システム環境

1. Tencent Cloud 軽量アプリケーションサーバー CentOS7.6

2. 運用プロセスと途中で遭遇した問題

1. SSHリモートLinux

ssh <ユーザー名>@<IPアドレスまたはドメイン名>

次の問題が発生した場合:

この問題の原因: known_hosts はリモート ホストの公開鍵を記録するファイルです。システムは以前に再インストールされており、保存された公開鍵は再インストールされていないシステムのシステム公開鍵のままです。ssh に接続すると、最初に公開鍵が検証されます。公開鍵が正しくない場合は、エラーが報告されます。解決策: shh-keygen コマンドssh-keygen -R IPを使用します。実行後、次の図が表示されます。

次に、ssh を使用して Linux にリモート接続します。


2. システムを更新する

sudo yum アップデート

3. Gitをインストールする

sudo yum -y gitをインストールします

4. Nginx をインストールし、サービスを有効にして開始します。

sudo yum nginxをインストール
sudo systemctl nginx を有効にする
sudo systemctl nginxを起動します

5. Dotnet SDKをインストールする

これをコンピューターごとに 1 回だけ実行する必要があります。

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum インストール dotnet-sdk-5.0

6. Docker環境をインストールする

1) Docker ソースをインストールします。

まず、アンインストール コマンドを実行します。以前にインストールしたことがある場合、またはシステムに付属している場合は、クリーンにアンインストールする必要があります。

sudo yum 削除 docker-ce

その後、指定されたソースをインストールできます。公式バージョンと Alibaba Cloud バージョンがあります。ここでは Alibaba Cloud バージョンを使用してみます。より高速になると聞きました。
ステップ1: 必要なシステムツールをインストールする

sudo yum install -y yum-utils デバイスマッパー永続データ lvm2

ステップ2: ソフトウェアソース情報を追加する

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

ステップ3: Docker-CEを更新してインストールする

sudo yum makecache fast (オプション)
sudo yum -y をインストールします。

ステップ4: Dockerサービスを開始する

sudo サービス docker 開始

Dockerの起動を設定する

systemctl ドッカーを有効にする

Dockerを起動する

systemctl ドッカーを起動する

バージョンを表示

docker --バージョン

Docker 共通コマンド

すべてのDockerイメージを表示
imageid で画像を削除する

docker rmi [イメージID]

すべての画像を削除

sudo docker rmi $(docker イメージ -q)

すべてのコンテナの実行ステータスを表示する

ドッカーps -a

コンテナIDでコンテナ(インスタンス)を削除する

docker rm [コンテナID]

すべてのコンテナを削除

docker rm $(sudo docker ps -a -q)

2) Hello Worldをテストする

Docker が正常に実行できるかどうかを確認します (hello-world イメージを実行します。ローカル マシンに hello-world イメージがない場合、システムが自動的に hello-world イメージをプルします)

docker で hello-world を実行する

現時点では、次のことを確認できます。
現在サーバー上で利用可能な画像は何ですか?

Docker イメージ

どのコンテナが存在するかを確認するにはどうすればいいですか?

ドッカーps -a

これは、先ほど見た出力コンテンツを含むコンテナです。コンテナ ID は eb180038a3ce、イメージは hello-world、ステータスは exited です。

7. 自分の画像を公開する

1) Docker サポートを追加します。

プロジェクトで公開するインターフェースをカスタマイズする

APIレイヤーを右クリックしてDockerサポートを追加し、Linuxを選択します。

Dockerfileを変更する

FROM: プロジェクトのソースミラーであることを意味します。
WORKDIR: イメージの作業ディレクトリ。
COPY: ファイルをコピーします(Dockerfile が配置されているディレクトリ内のファイルをイメージ内の作業ディレクトリにコピーします)
EXPOSE: コンテナが開きたいポート(プロジェクトのポート 8081 を使用します)
ENTRYPOINT: コンテナの起動後に実行されるコマンド (dotnet Docker.Core.Api.dll コマンドがここで実行されます)

2 つのスクリプト ファイル: Docker.Core.Publish.Linux.sh と Docker.Core.Publish.Docker.sh


Dockerfile: 右クリックして、常にプロパティを開き、常に出力 (bin) ディレクトリにコピーします。次に、プロジェクトを GitHub または Gitee に公開します。GitHub に公開してから、Gitee に移動してプロジェクトの同期を強制します。中国からプロジェクトをクローンする方が速いです。

2) リリース

Git を使用してサーバー上のコードをプルし、リリース コマンドを実行します。私はバッチ ファイルを使用して、1 回のクリックで直接生成します (主にファイルの欠落を防ぐため)。

リリースコマンドを実行します。

生成された公開フォルダー PublishFiles を確認できます。
次のステップは、Docker イメージをコンパイルすることです。

3) イメージを作成する

公開フォルダーの PublishFiles フォルダーに移動し、このファイルが正常かどうかをテストします。

dotnet Docker.Core.Api.dll

すべてが正常であれば、現在のフォルダー内でビルドを開始します (その点に注意してください)。

docker build -t lenceas/apkimg 。

ここで、lenceas/apkimg はミラー名です。
Dockerfile には 5 つのステップがあるため、ここでも正確に 5 つのステップがあります。
次に、マシン上の画像を確認します。

ここにはさらに 2 つのイメージがあります。1 つはイメージ ID 48252cd5c2d0 で、プロジェクト ファイルのサイズは 209 MB です。もう 1 つは Dockerfile のソース イメージです。

4) イメージをDockerハブリポジトリにプッシュする

ステップ1: Docker hubにアカウントを登録する ステップ2: リポジトリを作成する

ステップ3: サーバーイメージのプッシュまずアカウントにログインします(以前にログインしたことがある場合は、ログアウトして再度ログインできます)

押す:

docker push lenceas/apkimg:latest

診る:
結果を表示するには管理バックエンドにログインします

正常にプッシュされたことがわかります。このようにして、イメージをどこでも使用できるようになります。
イメージができたので、コンテナは実行のみ可能なので、コンテナを作成できます。

8. コンテナを生成して実行する

1) コンテナを生成する

このイメージを使ってコンテナを生成してみましょう。

docker run -it -p 8081:8081 lenceas/apkimg

出力が表示されます。エラーがなければ、おめでとうございます。現在のプロセスを終了し、どのコンテナが存在するかを確認します。

この時点で、追加のコンテナ ID e45b93658007 があり、イメージは lenceas/apkimg コンテナであることがわかりますが、プロジェクト コンテナは終了状態にあり、開く必要があります。

ドッカーを起動します e45b93658007

ステータスはすでに実行中なので、インターフェースが正常かどうかをテストするにはどうすればよいでしょうか? curl コマンドを使用できます:

curl http://localhost:8081/WeatherForecast

ここまで到達したら、おめでとうございます。NetCore の Docker デプロイメントは基本的に完了です。最後のステップは nginx プロキシです。このプロセスは Docker によってすでに保護されているため、他のデーモン プロセスは必要ありません。

9. Nginx プロキシサービス

nginx.conf ファイルを次の 2 つの方法で変更します。
1. ファイルを編集するための vim コマンド: vim xxx
編集開始を挿入: i
保存して終了します: :wq!
2. FTP 経由でローカル コンピューターにダウンロードし、構成を変更します。具体的な構成はここでは書きませんので、オンラインで検索してください。

次のステップは、Nginx サービスを再起動することです。まず、構文エラーを検出できます。

nginx -t

nginx -s リロード

上記は、ASP.NET Core アプリケーションの Linux Docker デプロイメントの詳細です。ASP.NET Core アプリケーションの Docker デプロイメントの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Linux+Jexus での Asp.Net Core の公開と展開
  • MacOS+Linux+Nginx での Asp.Net Core の公開と展開
  • Linux CentOS の Docker に Asp.Net Core (.Net6) をデプロイする
  • .net core API を Linux にデプロイする方法
  • Linux サーバーに .Net Core WebApi をデプロイする方法
  • Linux サーバー上で Docker を使用して .net Core プロジェクトを展開するプロセス全体
  • NetCore1.1+Linux 導入の初体験
  • Linux で .net core 環境を展開するための詳細な手順
  • Asp.Net Core の公開と展開の詳細な説明 (MacOS + Linux + Nginx)
  • ASP.NET Core に関する予備調査 (Linux での公開と展開)
  • ASP.NET Core プログラムを Linux システムにデプロイする

<<:  Webデザインの経験: Webコードを効率的に書く

>>:  純粋なCSSでデジタルプラスとマイナスボタンを実装するための最適なソリューション

推薦する

Mysqlはマスタースレーブ構成とマルチマスターマルチスレーブ構成を実装します

現在シミュレーションしているのは、マスター スレーブ システム (ホスト 1 台とスレーブ 1 台)...

Vue で webSocket を使用してリアルタイムの天気を更新する方法

目次序文webSocket の操作と例について:ウェブソケット1. webSocketについて2. ...

html2canvasで画像が正常にキャプチャできない時の解決方法

質問まず、私が遭遇した問題についてお話しします。まず、そういった需要があるわけです。フロントエンドは...

MySQL データベースの基礎 SQL ウィンドウ関数の例の分析チュートリアル

目次導入導入集計関数 + over()ソート関数 + over() ntile() 関数 + ove...

Linux での MySQL 8.0 インストール チュートリアル

この記事では、LinuxでMySQL 8.0をインストールする方法を紹介します。具体的な内容は次のと...

QQtabBar による CSS 命名仕様 BEM の詳細な紹介

QQtabBar の BEMまず、BEMとはどういう意味でしょうか? BEM は、ブロック、要素、修...

MySQLデータテーブルの基本操作:テーブル構造の操作、フィールド操作例の分析

この記事では、テーブル構造操作やフィールド操作など、MySQL データ テーブルの基本的な操作につい...

Linuxコマンドのファイル上書きとファイル追加の詳細な説明

1. コマンド > と >> の違いコマンド>: ファイルが存在する場合は、...

Linux 環境に MySQL 8.0 をインストールするプロセスの紹介

目次序文1. Linux は yum ソースを変更します (MYSQL のインストールが遅い場合は試...

ソフトウェア テスト - MySQL (VI: データベース関数)

1.MySQL関数1. 数学関数PI() # 円周率 (pi) の値を返します。デフォルトの小数点...

MySQL の基本クイックスタート知識のまとめ (マインドマップ付き)

目次序文1. データベースの基礎知識1. データベースとは何ですか? 2. データベースの分類3. ...

webpackでHMRを手動で実装するいくつかの方法

目次1. はじめに2. GitHub 3. 基本構成プロジェクトディレクトリパッケージ.json c...

CSS の境界線を通して三角形と矢印を実装するサンプルコード

1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...

mysql 基本操作文コマンドの詳細な説明

1. MySQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...