windows下docker與.net core 的簡單示例


一 windows 下安裝docker

二 .net core 項目

  1. 新建一個空的ASP.NET Core Web 應用程序
  2. 在該項目的目錄下執行dotnet publish,可以看到在bin\Debug\netcoreapp2.1目錄下生成publish
  3. publish目錄下執行dotnet WebApplication1.dll可以運行項目

主要代碼如下:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseUrls("http://*:5001")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();
    }
}

三 鏡像

在publish目錄下新建Dockerfile文件

# 基於microsoft/dotnet:latest構建Docker Image
FROM microsoft/dotnet:latest
 
# 進入docker中的/usr/local/src目錄
RUN cd /usr/local/src
 
# 創建WebApplication1目錄
RUN mkdir WebApplication1
 
# 設置工作路徑
WORKDIR /usr/local/src/WebApplication1
 
# 將當前文件夾下的所有文件全部復制到工作目錄
COPY *.* ./
 
# 向外界暴露5001端口
EXPOSE 5001
 
# 執行dotnet WebApplication1.dll命令
CMD ["dotnet", "WebApplication1.dll"]

生成鏡像

docker build -t core/docker .

core/docker可以理解為名稱

如果是第一次生成,由於需要下載microsoft/dotnet:latest這個Docker Image作為基礎Image

運行

把裝好的docker運行起來,執行以下命令:

docker run -it -p 8001:5001 core/docker
  • -it參數表示需要提供一個模擬的shell環境,並要求有用戶交互功能,這樣當我們按下Ctrl+C的時候,就可以停止我們的應用程序
  • -p 8001:5001參數表示需要將Docker Container的5001端口映射到主機環境的8001端口,也就是客戶端可以直接通過8001端口訪問我們的應用程序
  • core/docker參數指定了需要運行的Docker Image。此處采用默認的latest標簽
docker ps //運行該命令可以查看所有容器,包括剛才運行的core/docker

錯誤解決

Error:
  An assembly specified in the application dependencies manifest (WebApplication1.deps.json) was not found:
    package: 'System.Data.SqlClient', version: '4.4.3'
    path: 'runtimes/unix/lib/netstandard2.0/System.Data.SqlClient.dll'

依賴的版本與實際引用的版本不相同,更細到最新的dotcore,再更新nuget

reference

在docker中運行ASP.NET Core Web API應用程序

Docker容器環境下ASP.NET Core Web API應用程序的調試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM