Docker コンテナで ASP.NET Core を実行する手順

Docker コンテナで ASP.NET Core を実行する手順

最近は学ぶべき知識が多すぎて、どれを先に学べばいいのかわかりません。このブログはもともとxamarin.formsのlistviewの使い方について書くつもりでした。Jianshuにlistviewの使い方を詳しく紹介している記事があるので、とりあえず保留にします。二次的な作業なので後で書きます。今週、私は万能の Taobao でブロックチェーンに関するチュートリアルを見つけ、.net Core について学びました。ここ 1、2 年は C# の技術をあまり追っておらず、Java に重点を置いていました。.net core 1.0 がリリースされたとき、.net core はまだ完璧ではないと感じたので、学習しませんでした。.net core がこんなに早く 3.0 に到達するとは思っていませんでした。やはり私は C# 出身なので、ルーツを忘れるわけにはいかないので、今後は .net core についても学んでいこうと思っています。ざっと調べてみると、.net との共通点がたくさんあることが分かりました。おそらく最大の特徴はクロスプラットフォームの部分でしょう。この記事ではまず、docker を使用して asp.net core アプリケーションを実行する方法を紹介します。

1. 新しいasp.netコアアプリケーションを作成する

ここで、myWebApp という新しい asp.net core アプリケーションが作成されます。

2. Dockerサポートを追加する

docker サポートを追加する方法は 2 つあります。1 つは、新しいプロジェクトを作成するときに docker サポートを有効にする方法、もう 1 つは、作成したプロジェクトを右クリックし、[追加] -> [docker サポート] を選択する方法です。

また、ウィンドウプラットフォームかLinuxプラットフォームかを選択する必要があります。ウィンドウシステムの場合はウィンドウプラットフォームを設定する必要があり、Dockerもウィンドウコンテナに設定する必要があります。次の図に示すように、間違ったプラットフォームが選択されているため、「イメージ オペレーティング システム「windows」はこのプラットフォームでは使用できません」というエラーが報告されます。

3. Dockerイメージを作成する

docker サポートを追加すると、dockerfile ファイルが自動的に生成されます。ここで落とし穴があります。COPY ["myWebApp/myWebApp.csproj", "myWebApp/"] の行で、myWebApp ディレクトリ内の myWebApp.csproj プロジェクト ファイルである myWebApp/myWebApp.csproj に注意する必要があります。そのため、作成された dockerfile をプロジェクト ファイル ディレクトリにコピーする必要があります。

#コンテナを構築または実行するホストマシンのオペレーティング システムによっては、FROM ステートメントで指定されたイメージを変更する必要がある場合があります。
#詳細については、https://aka.ms/containercompat を参照してください。

microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-sac2016 AS ベースから
ワークディレクトリ /app
エクスポーズ80

microsoft/dotnet:2.2-sdk-nanoserver-sac2016 AS ビルドから
ワークディレクトリ /src
コピー ["myWebApp/myWebApp.csproj", "myWebApp/"]
dotnet restore "myWebApp/myWebApp.csproj" を実行します。
コピー 。 。
ワークディレクトリ "/src/myWebApp"
dotnet build "myWebApp.csproj" -c Release -o /app を実行します。

ビルドからパブリッシュへ
dotnet publish "myWebApp.csproj" -c Release -o /app を実行します。

ベースから最終へ
ワークディレクトリ /app
--from=publish /app にコピーします。
エントリポイント ["dotnet", "myWebApp.dll"] 

プロジェクト ディレクトリで、docker コマンド build を使用して、docker イメージ docker build -t aspnetdemo を生成します (aspnetdemo の後に . があり、これは dockerfile パスを示しています)。ここでは aspnetdemo イメージがビルドされます。Dockerfile を実行するのは初めてなので、いくつかの .net core 基本イメージをダウンロードする必要があり、自宅のインターネット速度が比較的遅いため、ダウンロード処理に時間がかかりました。

4. コンテナを起動する

3 番目のステップでは、イメージが作成されました。docker images を使用して作成されたイメージを確認し、docker run を使用してコンテナーを起動し、.net core アプリケーションを実行できます。

ブラウザに http://localhost:8080/ と入力すると、次のページが表示されます。

Microsoft の公式ドキュメントには、Windows コンテナーを使用する場合は、ブラウザーでコンテナーの IP アドレスに直接アクセスする必要があると記載されています。ここでは、-p を使用してポートをマップしているため、http://localhost:8080/ を直接入力してアクセスできます。

次に、ipconfig を使用してコンテナにマップされている docker ip を見つけ、ブラウザに docker ip を入力してアクセスします。

V. 要約

この記事では、Docker による ASP.NET Core アプリケーションのデプロイについて簡単に紹介しただけです。今後、.NET Core はデータベースや Redis などのコンテナーに接続する可能性があり、コンテナーの相互接続、コンテナー オーケストレーション技術、DevOps の継続的インテグレーションなどが含まれます。今後、大幅に拡張される可能性があり、これらについては後で学習できます。

以下もご興味があるかもしれません:
  • .Net Core は Docker コンテナを展開します
  • ASP.NET Core 開発 Docker デプロイ
  • DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします
  • .Net6 プロジェクトを Docker にデプロイする
  • Docker に .NET 5 をデプロイする方法
  • .Net Core で Docker を使用するための予備チュートリアル
  • .NETCore Dockerはコンテナ化とプライベートイメージリポジトリ管理を実装します
  • docker を使用して Asp.net コア アプリケーションをデプロイするための完全な手順
  • Docker を使用した .Net 開発と展開

<<:  MySQL 5.6 のインストール手順(画像とテキスト付き)

>>:  コードレイン効果を実現するjQueryプラグイン

推薦する

docker runコンテナの自動終了の解決策

今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する複数の方法

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する 7 つの方法。コー...

小さなアイコンのフロントエンド処理ソリューションのグラフィカルな説明

序文この記事を始める前に、複数選択の質問をしてみましょう。フロントエンド開発でビルド ツールを使用す...

Windows で nginx を素早くインストールし、自動的に起動するように設定する

目次1. Windows システムでの Nginx のインストールと起動プロセス: 2. 起動時にN...

ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション

ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...

Vue Element フロントエンドアプリケーション開発 従来の Element インターフェースコンポーネント

目次1. リストインターフェースとその他のモジュールの表示処理2. 従来のインターフェースコンポーネ...

JavaScript 構造化代入の詳細な説明

目次コンセプト配列の分割値を個別に宣言して割り当てるデフォルト値の構造化解除変数値の交換関数によって...

JavaScriptの動作原理を理解しましょう

目次ブラウザカーネルJavaScript エンジンV8エンジンJavaScript がどのように実行...

LINUX でポートが占有されているかどうかを確認する方法

ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...

mysql データ型変換の実装

1. 問題下図のような表があり、結果値がreference_high値より大きいデータを見つける必要...

MYSQLは、ショッピングカートに追加する際に重複追加を防ぐためのサンプルコードを実装します。

序文最近、仕事の都合で、APP ショッピングカートの注文支払いに取り組んでいました。テスト中にバグが...

uni-app を使用して上部のナビゲーション バーにボタンと検索ボックスを表示する方法

最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...

MySQLがトランザクション分離を実装する方法の簡単な分析

目次1. はじめに2. RC および RR 分離レベル2.1. RRトランザクション分離レベルでのク...

Dockerをクリーンアンインストールする方法の詳細な説明

まず、サーバー環境情報: アンインストールの理由:しばらくするとホストマシンのディスクが100%にな...