在Docker容器中運行.Net Core web Api項目
安裝Docker環境
參考本人這篇《CentOS 7 下Docker的安裝》文章進行安裝以及環境配置,這裏不做贅述。
通過.NetCore開發WebApi項目
1. 創建.Net Core Web項目,如下圖所示:
這裏我們選擇Web API模板進行項目創建,為了簡單起見,我們不做身份驗證,也不選擇 Host in cloud,點擊ok項目及創建好
默認的項目文件結構如圖所示:
在cmd 執行dotnet restore 恢復依賴包
運行項目,在瀏覽器就可以查看到結果
至此,一個簡單的.Net Core開發的Web API項目就做好了
現在我們就把它放到Docker中運行。
Docker中運行
1. 首先我們先修改一下項目文件,主要是Program.cs和project.json
在Program.cs文件中加 .UseUrls("http://*:9001")是為了讓來自所有IP的請求都可以訪問這個API,當然也可以寫成.UseUrls("http://0.0.0.0:9001") 作用一樣,9001是公布出去的端口號。
另外一個修改的文件就是project.json,註釋掉type那行以及scripts。添加
"runtimes": {
"debian.8-x64": { }
}
因為我這裏代碼目標運行的機器是debian系統的docker鏡像,所以runtimes寫成了debian.8-x64。你可以按照你實際情況配置
2. 發布程序到文件系統
發布成功後,會在項目目錄下面生成發布好的文件
將發布成功的文件打個壓縮包,上傳到Linux機器上,並且解壓到一個目錄中, 進入到這個目錄中
新建一個Dockerfile文件 <touch Dockerfile>, 這個文件的作用是構建一個Docker運行鏡像。其中所需要填寫的內容如下:
1 FROM microsoft/dotnet:latest 2 3 RUN mkdir -p /usr/src/app/DockerTest 4 5 COPY . /usr/src/app/DockerTest 6 7 WORKDIR /usr/src/app/DockerTest8 9 EXPOSE 9002 10 11 CMD ["dotnet", "DockerTest.dll", "--server.urls", "http://*:9002"]
上面內容第1行代表在microsoft/dotnet:latest基礎上面構建Docker鏡像(這個微軟dotnet鏡像是以debian系統構建生成的)
第2行是表示新建一個DockerTest目錄
第3行是將當前目錄下面的所有文件都復制到剛才新建的DockerTest目錄下面
第4行是將程序工作目錄切換到DockerTest
第5行是將9002端口公布出去
第6行是執行dotnet DockerTest.dll 命令
Dockerfile文件編輯好後,執行docker build -t docker_test . 如下圖所示生成docker_test鏡像文件
通過docker images命令可以查看剛才新建的docker_test鏡像
運行docker_test鏡像創建出來的容器
通過瀏覽器訪問此docker容器Host起來的service
在Docker容器中運行.Net Core web Api項目