首頁 資訊 使用 docker 部署 AspNetCore 應(yīng)用:使用alpine鏡像并加入健康檢查和瘦身

使用 docker 部署 AspNetCore 應(yīng)用:使用alpine鏡像并加入健康檢查和瘦身

來源:泰然健康網(wǎng) 時(shí)間:2024年11月21日 04:17

前言#

使用 docker 部署 AspNetCore 應(yīng)用已經(jīng)是標(biāo)配了,之前我一直使用 mcr.microsoft.com/dotnet/aspnet:8.0 這類鏡像,簡單粗暴,不過可以使用 alpine 進(jìn)一步優(yōu)化鏡像大小。

很多開源工具的 docker 都有健康檢查,這次我順便也給加上了。

PS: 本文的例子項(xiàng)目來自一個(gè)差點(diǎn)被砍掉的項(xiàng)目「IdentityServerLite」,后面我會寫個(gè)文章介紹一下~

添加健康檢查#

注冊服務(wù)

builder.Services.AddHealthChecks();

配置中間件

app.MapHealthChecks("/healthz");

之后測試一下,本地運(yùn)行后訪問 http://host:port/healthz 可以看到 Healthy 字樣

修改 docker-compose#

在應(yīng)用配置下面增加 healthcheck 配置

這個(gè)鏡像 mcr.microsoft.com/dotnet/aspnet 里自帶了 wget ,所以直接用這個(gè)來請求健康檢查接口就完事了,如果用 curl 還得去安裝。

version: '3.6' services: web: image: ${DOCKER_REGISTRY-}web container_name: ids-lite restart: always environment: - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:80 build: context: . volumes: - .:/app networks: - swag healthcheck: test: ["CMD-SHELL", "wget --spider http://localhost:80/healthz || exit"] interval: 10s timeout: 5s retries: 5 networks: swag: name: swag external: true

換成 alpine 基礎(chǔ)鏡像#

還沒有配置CICD之前,我使用了 FrameworkDependent 的方式來搭配 docker 部署,詳見之前的文章: Asp-Net-Core開發(fā)筆記:FrameworkDependent搭配docker部署

換成 alpine 可以減少一半鏡像體積,從 240MB 減少到 100MB 左右。

修改 dockerfile

在 8.0 后面加 -alpine 就行了

FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS base RUN apk add --no-cache icu-libs WORKDIR /app EXPOSE 80 EXPOSE 443 FROM base AS final WORKDIR /app COPY . . ENTRYPOINT ["./IdsLite.Api"] ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

重新發(fā)布#

之前在本機(jī)發(fā)布的時(shí)候,運(yùn)行時(shí)選的是 linux-x64

這樣發(fā)布出來的可執(zhí)行文件是依賴 glibc 的

但是 alpine 基礎(chǔ)鏡像里是 musl libc

所以需要選擇 linux-musl-x64 這個(gè)運(yùn)行時(shí),然后重新發(fā)布

dotnet publish -r linux-musl-x64

搞定~

參考資料#

https://www.cnblogs.com/podolski/p/16603177.html

=======================================================================================

相關(guān)知識

使用 docker 部署 AspNetCore 應(yīng)用:使用alpine鏡像并加入健康檢查和瘦身
夏季使用變色鏡的危害
使用減肥產(chǎn)品 要當(dāng)心6種瘦身藥物成分
孕婦應(yīng)怎么合理使用電腦
上海平安健康(檢測)中心PET-MR分子影像臨床應(yīng)用研討峰會圓滿召開
老人適合用按摩器嗎 使用不當(dāng)反傷身
藥枕有益身體健康 使用需注意這些
塑料茶杯的使用壽命與健康環(huán)保影響探討
冬季眼睛干燥 使用眼藥水有禁忌
女性夏季怎么健康使用衛(wèi)生巾

網(wǎng)址: 使用 docker 部署 AspNetCore 應(yīng)用:使用alpine鏡像并加入健康檢查和瘦身 http://www.u1s5d6.cn/newsview17278.html

推薦資訊