日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 docker 编译运行 abp 项目

發布時間:2023/12/4 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 docker 编译运行 abp 项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前面的兩篇文章中,介紹了如何在華為鯤鵬架構及其Euler系統上運行dotnet core, 使用docker運行了默認的mvc模板項目,這篇文章繼續介紹在docker中運行更復雜的dotnet core項目,這里以業內鼎鼎大名的abp vnext框架,版本 2.6 為例。

我們還是假設宿主機不涉及任何 dotnet 環境,所有的dotnet操作全部由docker鏡像來處理。

1.? 生成幾個dotnet core的擴展鏡像

a.? sdk31鏡像?Dockerfile.sdk31

在官方的 sdk:3.1鏡像上設置中國時區,添加部分linux實用小工具,添加dotnet-ef, volo.abp.cli, nodejs, npm, yarn, gulp等生成編譯abp框架所需工具

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build MAINTAINER Coolincy coolincy@qq.com# 設定UTF-8及中文時區,并將 apt 包源改為阿里云鏡像 ENV LANG C.UTF-8 ENV TZ Asia/Shanghai ENV PATH $PATH:/root/.dotnet/toolsRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' > /etc/timezone \ && sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ && sed -i s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ && apt clean# 更新軟件包,并添加部分小工具 RUN apt update && apt upgrade -y && apt autoremove -y \ && apt install apt-utils nano wget dnsutils inetutils-ping net-tools iproute2 expect apt-transport-https -y \ && dotnet tool install -g dotnet-ef \ && dotnet tool install -g volo.abp.cli# 安裝 nodejs 12.x RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \ && apt install nodejs -y# 將 npm 包源改為阿里云鏡像,安裝 yarn 及 gulp RUN npm config set registry https://registry.npm.taobao.org \ && echo sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ >> /root/.npmrc \ && echo phantomjs_cdnurl=http://npm.taobao.org/mirrors/phantomjs >> /root/.npmrc \ && echo electron_mirror=https://npm.taobao.org/mirrors/electron/ >> /root/.npmrc \ && npm update -g && npm -g install yarn && npm -g install gulp-cli && npm info gulp-cli#docker build --pull -t sdk31 . -f Dockerfile.sdk31

執行?docker build --pull -t sdk31 . -f Dockerfile.sdk31?生成鏡像

b.? asp31鏡像?Dockerfile.asp31

在官方的 aspnet:3.1鏡像上設置中國時區,添加部分linux實用小工具

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 MAINTAINER Coolincy coolincy@qq.com# 設定UTF-8及中文時區,并將 apt 包源改為阿里云鏡像 ENV LANG C.UTF-8 ENV TZ Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' > /etc/timezone \ && sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ && sed -i s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ && apt clean# 更新軟件包,并添加部分小工具 RUN apt update && apt upgrade -y && apt autoremove -y \ && apt install apt-utils dmidecode nano wget dnsutils inetutils-ping net-tools iproute2 -y#docker build --pull -t asp31 . -f Dockerfile.asp31

執行?docker build --pull -t asp31 . -f Dockerfile.asp31?生成鏡像

c.? aspgdi31鏡像?Dockerfile.aspgdi31

在asp31鏡像上添加gdiplus庫,使 dotnet core 支持gdi圖形操作

FROM asp31 MAINTAINER Coolincy coolincy@qq.com# 添加 gdi RUN apt install libfontconfig1 libgdiplus -y RUN ln -s libgdiplus.so gdiplus.dll RUN ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/libdl.so# arm64 架構將上面一句改成下面兩句 #RUN ln -s /lib/aarch64-linux-gnu/ld-2.28.so /lib/aarch64-linux-gnu/ld.so #RUN ln -s /lib/aarch64-linux-gnu/ld-2.28.so /lib/aarch64-linux-gnu/libdl.so#docker build -t aspgdi31 . -f Dockerfile.aspgdi31

執行?docker build -t aspgdi31 . -f Dockerfile.aspgdi31?生成鏡像

2.? 使用sdk31鏡像新建一個默認配置的abp項目

使用docker運行sdk31鏡像,同時映射幾個目錄

~/dotnet : 用于存放生成的項目文件

~/.abp : abp命令行工具緩存?

~/.local/share/NuGet/v3-cache : NuGet源緩存

~/.nuget/packages : NuGet包緩存

映射緩存目錄是為了以后使用更快

docker run --rm -it \ -v ~/dotnet:/root/dotnet \ -v ~/.abp:/root/.abp \ -v ~/.local/share/NuGet/v3-cache:/root/.local/share/NuGet/v3-cache \ -v ~/.nuget/packages:/root/.nuget/packages \ sdk31 bash

進入容器后執行如下命令創建項目

# 如果nuget緩存有問題,可以使用一下命令清理緩存 dotnet nuget locals all -c# 切換到工作目錄 cd /root/dotnet# 使用 abp 命令行生成一個解決方案 abp new AOA.AbpOnDocker# 退出容器 exit

退出容器后,修改項目里的連接串配置

cd ~/dotnet/ nano AOA.AbpOnDocker/aspnet-core/src/AOA.AbpOnDocker.DbMigrator/appsettings.json

修改連接串(具體根據自己實際情況修改,如果SQLServer登錄賬號沒有建庫權限,那么必須先在SQLServer上創建指定數據庫)為:

Server=localhost; Database=AbpOnDocker; User ID=AbpOnDocker; Password=1q2w3e*; Trusted_Connection=False;

同樣修改Web項目里的連接串,同上一步,這里不再列出。

nano ~/dotnet/AOA.AbpOnDocker/aspnet-core/src/AOA.AbpOnDocker.Web/appsettings.json

3.? 使用sdk31鏡像以及asp31鏡像生成AbpOnDocker程序鏡像

cd ~/dotnet/AOA.AbpOnDocker/aspnet-core

新建Dockerfile,內容如下

FROM asp31 AS base WORKDIR /app EXPOSE 80 EXPOSE 443FROM sdk31 AS publish# copy proj and restore as distinct layers WORKDIR /src COPY . . RUN dotnet restore "src/AOA.AbpOnDocker.Web/AOA.AbpOnDocker.Web.csproj" \ && dotnet restore "src/AOA.AbpOnDocker.DbMigrator/AOA.AbpOnDocker.DbMigrator.csproj"# db migrator WORKDIR "/src/src/AOA.AbpOnDocker.DbMigrator" RUN dotnet run -c Release# publish WORKDIR "/src/src/AOA.AbpOnDocker.Web" RUN yarn && gulp \ && dotnet publish "AOA.AbpOnDocker.Web.csproj" -c Release -o /app/publish# build docker image FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "AOA.AbpOnDocker.Web.dll"]

編譯 docker 鏡像

docker build -t abpondocker . -f Dockerfile

輸出如下

數據庫表及初始化數據生成

還原js包

發布web項目并生成鏡像

執行 docker images 看到鏡像已經生成成功了,同時會看到一個 none的鏡像

這個鏡像是docker編譯過程中生成的中間鏡像,可以執行

docker system prune

命令清除這個無用的鏡像。

運行 docker 鏡像

docker run --rm -it -p 44324:443 -p 8024:80 abpondocker

現在打開瀏覽器訪問一下8024端口,abp vnext框架已經跑起來了。

總結,把官方sdk鏡像作為基礎鏡像,我們可以隨意添加所需的工具,生成滿足自己使用要求的鏡像,比如abp框架,需要abp cli, nodejs, npm, yarn, gulp 等工具,我們新構建含有這些工具的sdk鏡像,通過docker就可以輕輕松松的做到不在宿主機建立dotnet core 環境,而進行dotnet編譯構建運行等操作。本文以abp為例,不同的項目所需工具不盡相同,讀者同學們可以根據實際需要構建自己的鏡像。為了方便學習,本文相關文件可以在 https://github.com/coolincy/dotnetStart 中找到。

歡迎關注公眾號 "dotnet 新征程"

總結

以上是生活随笔為你收集整理的使用 docker 编译运行 abp 项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。