1.新建一個(gè) ASP.NET Core 2.1 項(xiàng)目
然后運(yùn)行一下項(xiàng)目,確保我們剛剛建立的項(xiàng)目可以正常運(yùn)行。
2.編寫(xiě) Dockerfile
新建一個(gè)文本文件,命名為 Dockerfile
FROM microsoft/dotnet:2.1-aspnetcore-runtime WORKDIR /app COPY . . EXPOSE 80 ENTRYPOINT ["dotnet", "AspNetCore.Docker.dll"]
這里我們需要用到官方的鏡像:microsoft/dotnet:2.1-aspnetcore-runtime
如果要嘗試更小的鏡像,可以試試 microsoft/dotnet:2.1-aspnetcore-runtime-alpine
,這鏡像使用了alpine
一款精簡(jiǎn)版極小的linux,但是隨之而來(lái)的就是閹割了一些功能,實(shí)際使用的時(shí)候需要測(cè)試,比如國(guó)際化支持,它默認(rèn)在這個(gè)鏡像里面沒(méi)有開(kāi)啟,需要配置環(huán)境變量來(lái)開(kāi)啟。
需要設(shè)置Dockerfile的如下屬性,保證其能復(fù)制到發(fā)布目錄:
3.構(gòu)建Docker鏡像
我們將鏡像命名為 :aspnetcoredocker
進(jìn)入到發(fā)布文件目錄,執(zhí)行命令便可打包鏡像:
docker build -t aspnetcoredocker .
我們可以編寫(xiě) 發(fā)布+構(gòu)建 的腳本。
Windows:
文件名: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 .
文件夾結(jié)構(gòu)如下圖:
執(zhí)行構(gòu)建:
./build.sh
構(gòu)建成功后可以通過(guò) docker images
命令查詢到我們構(gòu)建的鏡像:
若在linux下執(zhí)行sh腳本時(shí),遇到錯(cuò)誤“-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory“,請(qǐng)通過(guò)vim/vi編輯sh腳本,按:建,輸入 set ff=unix
,然后回車、wq保存即可
4.運(yùn)行鏡像
通過(guò)命令運(yùn)行
docker run --name=aspnetcoredocker -p 7777:80 -d aspnetcoredocker
--name
:指定容器名稱
-p
:指定容器端口
-d
:指定容器 后臺(tái)運(yùn)行
出現(xiàn)一長(zhǎng)串字符串,便是表示運(yùn)行成功:
我們也可以通過(guò) docker ps
命令,查詢我們正在運(yùn)行的容器:
我們還可以通過(guò) docker logs <容器名稱或者id>來(lái)查看啟動(dòng)日志:
5.驗(yàn)證訪問(wèn)
我們可以通過(guò) curl
命令來(lái)直接訪問(wèn)我們?nèi)萜鲉?dòng)的asp.net core 網(wǎng)站:
或者直接通過(guò)瀏覽器訪問(wèn):
至此,我們通過(guò)Docker運(yùn)行asp.net core 2.1應(yīng)用程序就結(jié)束了。
6.資料
本文所用代碼:https://github.com/stulzq/BlogDemos/tree/master/AspNetCore.Docker
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com