使用 docker 部署 AspNetCore 应用:使用alpine镜像并加入健康检查和瘦身
前言#
使用 docker 部署 AspNetCore 应用已经是标配了,之前我一直使用 mcr.microsoft.com/dotnet/aspnet:8.0 这类镜像,简单粗暴,不过可以使用 alpine 进一步优化镜像大小。
很多开源工具的 docker 都有健康检查,这次我顺便也给加上了。
PS: 本文的例子项目来自一个差点被砍掉的项目「IdentityServerLite」,后面我会写个文章介绍一下~
添加健康检查#
注册服务
builder.Services.AddHealthChecks();
配置中间件
app.MapHealthChecks("/healthz");
之后测试一下,本地运行后访问 http://host:port/healthz 可以看到 Healthy 字样
修改 docker-compose#
在应用配置下面增加 healthcheck 配置
这个镜像 mcr.microsoft.com/dotnet/aspnet 里自带了 wget ,所以直接用这个来请求健康检查接口就完事了,如果用 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 基础镜像#
还没有配置CICD之前,我使用了 FrameworkDependent 的方式来搭配 docker 部署,详见之前的文章: Asp-Net-Core开发笔记: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
重新发布#
之前在本机发布的时候,运行时选的是 linux-x64
这样发布出来的可执行文件是依赖 glibc 的
但是 alpine 基础镜像里是 musl libc
所以需要选择 linux-musl-x64 这个运行时,然后重新发布
dotnet publish -r linux-musl-x64
搞定~
参考资料#
https://www.cnblogs.com/podolski/p/16603177.html=======================================================================================
相关知识
使用 docker 部署 AspNetCore 应用:使用alpine镜像并加入健康检查和瘦身
夏季使用变色镜的危害
使用减肥产品 要当心6种瘦身药物成分
孕妇应怎么合理使用电脑
上海平安健康(检测)中心PET-MR分子影像临床应用研讨峰会圆满召开
老人适合用按摩器吗 使用不当反伤身
药枕有益身体健康 使用需注意这些
塑料茶杯的使用寿命与健康环保影响探讨
冬季眼睛干燥 使用眼药水有禁忌
女性夏季怎么健康使用卫生巾
网址: 使用 docker 部署 AspNetCore 应用:使用alpine镜像并加入健康检查和瘦身 https://www.trfsz.com/newsview17278.html
推荐资讯
- 1从出汗看健康 出汗透露你的健 3671
- 2早上怎么喝水最健康? 3498
- 3习惯造就健康 影响健康的习惯 3199
- 4五大原因危害女性健康 如何保 3085
- 5连花清瘟、布洛芬等多款感冒药 2897
- 6男子喝水喉咙里像放了刀子一样 2394
- 7第二轮新冠疫情要来了?疾控中 2162
- 810人混检核酸几天出结果?1 2152
- 9转阴多久没有传染性?满足四个 2108
- 10打完新冠疫苗后能喝绿豆汤吗? 2009