web-dev-qa-db-ja.com

VS 2017で作成されたDockerイメージを実行する方法

Docker noob here ...

コマンドラインでVisual Studio 2017によって生成されたAsp.Net COREアプリのDockerイメージを適切に実行するにはどうすればよいですか?

docker run -it -d -p 80:32769 myappimage

正しく動作していないようです(画像は実行されますが、アプリを参照できません)

注:デフォルトのテンプレートを使用してStudio内にサンプルのASP.Net Core Webアプリを作成し、Dockerサポートを追加しました([Dockerサポートを追加]チェックボックスをクリックして)。これを行うと、Studioはdockerfileといくつかのdocker-composeファイルを追加します。

Visual Studioがイメージを「実行」すると(F5キーを押す)-アプリケーションを(「 http:// localhost:32789 または類似のホストポート経由で)正常に参照できます。コンテナー内のアプリはポート上にあります80)。しかし、コマンドラインで自分で実行するコマンドを理解できません。

Studioがプロジェクトに追加する標準のDockerfileは...

FROM Microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApplication2.dll"]
13
HokieMike

はい、可能です。 Release構成でソリューションを再構築し、docker-composeF5プロジェクトを実行して、イメージが確実に更新され、アプリは正常に動作しています。次に、docker imagesコンソールコマンド を実行します。次のようなものが表示されます。

REPOSITORY   TAG      IMAGE ID       CREATED              SIZE
Your.App     latest   673b79a6bb3d   About a minute ago   294 MB

必要なのは、そのイメージから新しいコンテナーを実行し、その公開されたポートをlocalhostポートにマップすることだけです。デフォルトでは、公開されるポートは80です(Dockerfileを参照)。例えば:

docker run -d -p 1234:80 --name some_name Your.App:latest

その後、http://127.0.0.1:1234/でアプリにアクセスできるようになります。

説明:

Debug構成が設定されている場合、empty機能しないイメージはVisual Studioによって作成されます。空のコンテナをファイルシステムに手動でマッピングして、デバッグ、「編集および続行」機能などを可能にします。これがdev画像がVisual Studioなしでは役に立たない理由です。 Release構成でイメージをビルドして使用可能にします。

完全な公開プロセスについては、ドキュメントで説明されています。 Visual Studio Tools for Docker

Dockerイメージの公開

アプリケーションの開発とデバッグのサイクルが完了すると、Visual Studio Tools for Dockerを使用して、アプリケーションの本番イメージを作成できます。デバッグドロップダウンをReleaseに変更して、アプリケーションをビルドします。ツールは:latestタグ付きのイメージを生成し、プライベートレジストリまたはDocker Hubにプッシュできます。

25
Ilya Chumakov

ここで何か混乱しています。 Visual Studio 2017でF5を使用してプロジェクトを実行する場合、ランダムに構成されたポートでIISExpressを使用してプロジェクトを実行します。

DockerにIISExpressがない場合、アプリはKestrelによってのみホストされます(Kestrelは常にIIS/IISExpressの背後でも使用されますが、リバースプロキシとして機能します)。

Kestrelのデフォルトポートは5000ですが、設定することもできます。リスニングIP /ポートを構成する必要があるメソッドの詳細については、私の投稿 こちら を参照してください。

0
Tseng