ドッカーコンテナに既にコンパイル済みのAspnetコア1.1アプリケーションがあるフォルダをマウントするという考えがあります。OSXのドッカーコンテナにDotnet Antiforgery DLLがありません
私はファイルが見つからないときにこれを行います。それを作る最善の方法は何か...欠けていない?問題を再現する方法
:私のOSXのホストで
私はハロー世界のWebアプリを作成して開始するフォルダ/myrootedpath/TheApp
と
dotnet new -t web
dotnet restore
dotnet run
を作成します。
(私はcurl localhost
だから私はそれがホストで動作することを知っている)
私はctrl-cでサーバを停止します。
私はその後、前述のフォルダをマウントコンパイルし
docker run -p 80:80 -ti \
-v /myrootedpath/TheApp:/theapp microsoft/dotnet \
/bin/bash -c 'cd /theapp; dotnet run'
を通じてWebサーバを起動しますが、それは
プロジェクトtheapp(.NETCoreApp、バージョン= V1.1で停止したコンテナを作成)は以前にコンパイルされました。コンパイルをスキップします。
エラー:マニフェストの依存関係に指定されたアセンブリが見つかりませんでした - パッケージ: 'Microsoft.AspNetCore.Antiforgery'、バージョン '1.0.1'、パス「のlib/netstandard1.3/Microsoft.AspNetCore.Antiforgery .dll '
私はAntiforgery.dll
が見当たりません。
私はそれを見つけてそれをコピーして新しいイメージを作成することができます。
これはお勧めの解決策ですか?
UPDATE
私は質問が容器の外にコンパイルDOTNETコアコードを実行するために必要とされているものに帰着することを明確にしたいの恩恵を開始したよう。
私は 'dotnet publish'コマンドを試して、結果を得ました。しかし、 'project.json'がないので、私の' dotnet run'は失敗しました。 – LosManos
はい。 'dotnet publish'の後に' dotnet myapp.dll'を実行してください。そして、あなたはこれのためにSDKを必要としません、ランタイムで十分です。 – Dmitry