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プラグイン

推薦する

HTMLでアンカーの位置を設定するためのいくつかの一般的な方法

HTML でアンカーの位置を設定する方法はいくつかあるので、ここで紹介します。 1. ID ポジショ...

Linux サーバーが処理できる接続数をご存知ですか?

序文まず、TCP 接続を識別する方法を見てみましょう。システムは、(src_ip、src_port、...

CSS 経由で JS にパラメータを渡す方法

1. CSSを通す必要がある背景CSS におけるメディアクエリの用途は、デバイスサイズの判別、マウス...

ネイティブ js を使用してライブ バレット スクリーンのスクロール効果をシミュレートします。

目次1. 基本原則2. 特定のコード要約する1. 基本原則まず、生放送エリアを10の部分に分割し(個...

ES6 Promiseの使い方の詳細な説明

目次約束とは何ですか?拒否の使用法キャッチの使い方すべての使用法レースの使用約束とは何ですか? Pr...

MySQL で指定エンコーディングを実装する際の落とし穴について

前面に書かれた環境: MySQL 5.7+、MySQL データベースの文字エンコードは utf8、テ...

innodb_flush_method 値メソッド (例の説明)

innodb_flush_methodのいくつかの典型的な値 fsync: InnoDB は fs...

HTML と CSS の基礎 (必読)

(1) HTML: ハイパーテキストマークアップ言語。主に「ヘッダー」と「ボディ」の2つの部分で構...

ネイティブ JS 音楽プレーヤー

この記事の例では、音楽プレーヤーを実装するためのJSの具体的なコードを参考までに共有しています。具体...

MySQL マスター/スレーブ データベース同期構成と一般的なエラー

アクセス回数が増えると、時間のかかるデータベース読み取り操作では、データベースへの負荷を軽減するため...

docker で nginx+php+mysql を設定する方法

まず、方法を理解します。 docker exec を使用して Docker コンテナに入るDocke...

フロントエンド開発者に何百万ドルもの価値をもたらす 10 のスキル

フロントエンド開発者が習得する必要のあるスキル。これらのスキルにより、フロントエンド開発者の価値は数...

WiFi 開発 | WiFi ワイヤレス テクノロジーの紹介

目次WiFiワイヤレステクノロジーの紹介1. WiFiテクノロジーの概要2. ESP8266の紹介W...

MySQL InnoDB row_id 境界オーバーフロー検証方法の手順

背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...

Ubuntu 18.04 で MySQL のインストール時にパスワードが要求されない場合の解決方法

Ubuntu 1804 への MySQL 5.7 のインストールについて詳しく紹介します。 MySQ...