[英]docker + dotnet watch
我使用Visual Studio Code。
我創建一個新的projet dotnet和新的webapi。 我在.csproj中引用了dotnet-watch: <ItemGroup> <DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" /> <DotNetCliToolReference Include="Microsoft.Extensions.Caching.SqlConfig.Tools" Version="2.0.0" /> </ItemGroup>
然后,我構建我的DockerFile。
我注意到奇怪的行為。 泊塢窗映像檢測到更改並重建解決方案。 二進制文件已經在bin和obj目錄中進行了更新,但是當我調用api時,就好像從未進行任何更改一樣。
FROM microsoft/aspnetcore-build:2.0
COPY . /app
WORKDIR /app
ENV ASPNETCORE_URLS=http://*:5000
EXPOSE 5000
ENV DOTNET_USE_POLLING_FILE_WATCHER=1
ENV ASPNETCORE_ENVIRONMENT=Development
Docker命令:docker run -i -p 5000:5000 -v $ {pwd):/ app -t docker-todoapi
終於在容器終端中:docker restore和docker watch run
這篇博客文章描述了當前的問題,以及如何解決這些問題:
http://www.natemcmaster.com/blog/2017/11/13/dotnet-watch-and-docker/
要總結更改,您需要:
使用Microsoft.DotNet.Watcher.Tools的 2.1.0-preview1-27567版本。
要獲得此預覽版本,您需要在您的項目目錄中添加一個NuGet.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="aspnetcore-nightly" value="https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
Docker中使用的bin
和obj
目錄必須與Visual Studio Code使用的目錄分開,否則您將遇到當前遇到的問題。
為此,必須將bin
和obj
目錄放置在項目目錄之外的一個相當奇怪的位置,這可以通過在項目目錄中添加一個名為Directory.Build.props
的文件來實現:
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/../obj/</BaseIntermediateOutputPath>
<BaseOutputPath>$(MSBuildProjectDirectory)/../bin/</BaseOutputPath>
</PropertyGroup>
</Project>
您還必須從項目目錄中刪除舊的bin
和obj
目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.