重要提示,本文爲 ASP.NET Core 2.1 若是你是 2.2 那麼請將文中的鏡像換爲
microsoft/dotnet:2.2.0-aspnetcore-runtime
便可,其餘操做同樣linux
而後運行一下項目,確保咱們剛剛創建的項目能夠正常運行。git
新建一個文本文件,命名爲 Dockerfile
github
FROM microsoft/dotnet:2.1-aspnetcore-runtime WORKDIR /app COPY . . EXPOSE 80 ENTRYPOINT ["dotnet", "AspNetCore.Docker.dll"]
這裏咱們須要用到官方的鏡像:microsoft/dotnet:2.1-aspnetcore-runtime
docker
若是要嘗試更小的鏡像,能夠試試
microsoft/dotnet:2.1-aspnetcore-runtime-alpine
,這鏡像使用了alpine
一款精簡版極小的linux,可是隨之而來的就是閹割了一些功能,實際使用的時候須要測試,好比國際化支持,它默認在這個鏡像裏面沒有開啓,須要配置環境變量來開啓。shell
須要設置Dockerfile的以下屬性,保證其能複製到發佈目錄:vim
咱們將鏡像命名爲 :aspnetcoredocker
瀏覽器
進入到發佈文件目錄,執行命令即可打包鏡像:bash
docker build -t aspnetcoredocker .
咱們能夠編寫 發佈+構建 的腳本。app
Windows:asp.net
文件名:build.bat
@echo off echo "Windows Docker build" cd ../AspNetCore.Docker dotnet publish -c Release -o ../publish cd ../publish echo "publish success" docker build -t aspnetcoredocker .
文件名:Linux:
build.sh
#!/bin/bash echo Linux Docker build cd ../AspNetCore.Docker dotnet publish -c Release -o ../publish cd ../publish echo publish success docker build -t aspnetcoredocker .
文件夾結構以下圖:
執行構建:
./build.sh
構建成功後能夠經過 docker images
命令查詢到咱們構建的鏡像:
若在linux下執行sh腳本時,遇到錯誤「-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory「,請經過vim/vi編輯sh腳本,按:建,輸入
set ff=unix
,而後回車、wq保存便可
經過命令運行
docker run --name=aspnetcoredocker -p 7777:80 -d aspnetcoredocker
--name
:指定容器名稱
-p
:指定容器端口
-d
:指定容器 後臺運行
出現一長串字符串,即是表示運行成功:
咱們也能夠經過 docker ps
命令,查詢咱們正在運行的容器:
咱們還能夠經過 docker logs <容器名稱或者id> 來查看啓動日誌:
咱們能夠經過 curl
命令來直接訪問咱們容器啓動的asp.net core 網站:
或者直接經過瀏覽器訪問:
至此,咱們經過Docker運行asp.net core 2.1應用程序就結束了。
本文所用代碼:https://github.com/stulzq/BlogDemos/tree/master/AspNetCore.Docker