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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

超级简便的容器化部署工具(使用 ASP.NET Core 演示)

發(fā)布時間:2023/12/4 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超级简便的容器化部署工具(使用 ASP.NET Core 演示) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Docker 改變了我們部署網(wǎng)站的方式,從原先的手動編譯打包上傳,到現(xiàn)在的構(gòu)建鏡像然后推送部署,讓我們在配置環(huán)境上所花費的時間大大減少了。不僅如此,通過一系列相關(guān)的工具配合,可以很輕松的實現(xiàn) CI、CD。本文即將介紹的就是這么一款非常簡便的工具——captainduckduck,使用 captainduckduck 只需要很少的 Docker 知識。

簡介

原先,我們的部署流程可能是這樣的:

拉取代碼 -> 構(gòu)建鏡像 -> 啟動容器

除此之外,還需要配置 HTTPS,配置反向代理,如果要更新應(yīng)用的話,還需要手動去執(zhí)行一遍部署流程,先不說一遍一遍執(zhí)行這些個東西挺枯燥的,再一個,當同一臺服務(wù)器上托管的網(wǎng)站多了,時間一長,可能反向代理的端口號都記不清,之后再部署新的網(wǎng)站,還得把 nginx 配置文件看一遍。

幸運的是,我無意間發(fā)現(xiàn)了 captainduckduck, 這是一個能夠極大的簡化我們使用 Docker 部署 Web 服務(wù)步驟的工具,完美的擊中了上面提到的痛點,而且使用起來非常的簡單。captainduckduck 是對 Docker swarm 技術(shù)一個較好的封裝,提供了一個 Web 面板以及一個客戶端命令行工具,即使用戶完全沒有接觸過 Docker Swarm 甚至沒怎么用過 nginx、Docker,也能夠輕松的部署網(wǎng)站。

準備工作

首先需要準備這些東西:

  • 一個支持泛解析的域名

  • 一臺安裝好了 Docker 17.06.x 的 Linux 服務(wù)器(最低配置 1核1G)

在校大學(xué)生可以使用騰訊云或者阿里云提供的學(xué)生套餐,其中包含不少于 1G 內(nèi)存的服務(wù)器跟一年的域名,也不貴,每月支出一兩頓飯錢而已。

安裝 Captain 服務(wù)端

mkdir /captain docker run -v /var/run/docker.sock:/var/run/docker.sock dockersaturn/captainduckduck

運行上面的兩條 shell 命令并等待執(zhí)行結(jié)束,就完成了服務(wù)端的部署,啊,就是這么簡單。然后你就可以在瀏覽器里訪問:http://[IP_OF_YOUR_SERVER]:3000?Web 面板了。使用默認密碼登陸后,就可以來配置服務(wù)端了。

配置服務(wù)端

首先在你的域名解析處添加一個 A 記錄:*.something,IP 指向安裝了 captainduckduck 的服務(wù)器。然后在 Web 面板的 Dashboard 頁面設(shè)置?Captain Root Domain:something.example.com。同時,你還可以啟用 HTTPS,captainduckduck 會自動的使用 Let's Encrypt 給你的域名加上一個 HTTPS 證書。添加好根域名后,captainduckduck 會給 Web 面板分配一個用來直接訪問的域名:captain.something.example.com。

至此,captainduckduck 就已經(jīng)部署完畢了,讓我們測試一下,切換到 Apps 頁面,點擊?OneClick Apps/Databases,在下拉列表中選擇 WordPress,然后按照表單填寫數(shù)據(jù)庫相關(guān)的信息,稍等幾分鐘,就可以一鍵部署一個 WordPress 站點了。這里是我運行好的:https://test-wp.app.gianthard.rocks/

部署 ASP.NET Core 網(wǎng)站

Dockerfile

captainduckduck 默認并不支持 ASP.NET Core 網(wǎng)站的一鍵部署,需要自己動手寫一個?Dockerfile,不過好在微軟已經(jīng)給了標準樣例:

# Sample contents of Dockerfile# Stage 1FROM microsoft/aspnetcore-build AS builderWORKDIR /source# caches restore result by copying csproj file separatelyCOPY ./src/*.csproj .RUN cd ./src && dotnet restore# copies the rest of your codeCOPY ./src/ .RUN cd ./src && dotnet publish --output /app/ --configuration Release# Stage 2FROM microsoft/aspnetcoreWORKDIR /appCOPY --from=builder /app .ENTRYPOINT ["dotnet", "myapp.dll"]

如果你的網(wǎng)站使用了現(xiàn)代前端框架的服務(wù)端渲染技術(shù),你可以使用下面的?Dockerfile?樣例:

# Sample contents of Dockerfile# Stage 1FROM microsoft/aspnetcore-build AS builderWORKDIR /source# caches restore result by copying csproj file separatelyCOPY ./src/*.csproj .COPY ./src/package.json .# 如果你的服務(wù)器網(wǎng)絡(luò)不好,請自行在這里修改 npm 倉庫RUN cd ./src && dotnet restore && npm i# copies the rest of your codeCOPY ./src/ .RUN cd ./src && dotnet publish --output /app/ --configuration Release# Stage 2FROM microsoft/aspnetcore:2.0.5ENV NODE_VERSION 9.3.0RUN curl -SLO "https://mirrors.ustc.edu.cn/node/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" \&& curl -SLO --compressed "https://mirrors.ustc.edu.cn/node/v$NODE_VERSION/SHASUMS256.txt" \&& grep " node-v$NODE_VERSION-linux-x64.tar.gz\$" SHASUMS256.txt | sha256sum -c - \&& tar -xf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \&& rm "node-v$NODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt \&& ln -s /usr/local/bin/node /usr/local/bin/nodejsWORKDIR /appCOPY --from=builder /app .ENTRYPOINT ["dotnet", "myapp.dll"]

captain-definition

雖然上面介紹了?Dockerfile,但最終要使用的是?captain-definition?這個文件,這個文件的詳細說明請看:https://github.com/githubsaturn/captainduckduck/wiki/Captain-Definition-File,不過 captainduckduck 的作者提供了一個在線轉(zhuǎn)換工具:https://githubsaturn.github.io/dockerfile-to-captain/。

轉(zhuǎn)換后的結(jié)果如下:

{"schemaVersion": 1,"dockerfileLines": ["# Sample contents of Dockerfile","# Stage 1","FROM microsoft/aspnetcore-build AS builder","WORKDIR /source","# caches restore result by copying csproj file separately","COPY ./src/*.csproj .","COPY ./src/package.json .","# 如果你的服務(wù)器網(wǎng)絡(luò)不好,請自行在這里修改 npm 倉庫","RUN dotnet restore && npm i","# copies the rest of your code","COPY ./src/ .","RUN dotnet publish --output /app/ --configuration Release","# Stage 2","FROM microsoft/aspnetcore:2.0.5","ENV NODE_VERSION 9.3.0","RUN curl -SLO \"https://mirrors.ustc.edu.cn/node/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz\" \\"," ?&& curl -SLO --compressed \"https://mirrors.ustc.edu.cn/node/v$NODE_VERSION/SHASUMS256.txt\" \\"," ?&& grep \" node-v$NODE_VERSION-linux-x64.tar.gz\\$\" SHASUMS256.txt | sha256sum -c - \\"," ?&& tar -xf \"node-v$NODE_VERSION-linux-x64.tar.gz\" -C /usr/local --strip-components=1 --no-same-owner \\"," ?&& rm \"node-v$NODE_VERSION-linux-x64.tar.gz\" SHASUMS256.txt \\"," ?&& ln -s /usr/local/bin/node /usr/local/bin/nodejs","WORKDIR /app","COPY --from=builder /app .","ENTRYPOINT [\"dotnet\", \"myapp.dll\"]"]}

這里需要注意的是,即使?captain-definition?文件位于項目根目錄,但在服務(wù)端構(gòu)建的時候,項目文件夾的內(nèi)容會被克隆到?./src,而由 captainduckduck 生成的?Dockerfile?會位于?./Dockerfile,所以在編寫 Dockerfile 的時候,就應(yīng)該考慮到這個情況。

客戶端命令行工具

captainduckduck 命令行工具可以用來讓我們不用打開 Web 面板就來部署網(wǎng)站,命令行工具安裝起來也很簡單:

npm i -g captainduckduck# 或者# yarn global add captainduckduck

接下來讓我們連接到 captainduckduck 服務(wù)端:

captainduckduck login

部署一個試試

部署網(wǎng)站之前需要先創(chuàng)建一個 App,首先登陸 Web 面板,切換到 App 頁面,輸入 App 的名字:react,然后點擊?Create A New App。這樣,一個 App 就創(chuàng)建完成了,現(xiàn)在我們可以關(guān)掉網(wǎng)站,接著在本地創(chuàng)建一個樣例項目:

mkdir myapp cd myapp dotnet new react yarn # Or npm i

然后把上面的?caption-definition?文件添加到項目根目錄。接著執(zhí)行:

git init git add . git commit -m 'init commit'captainduckduck deploy

稍等幾分鐘,你就可以打開?http://react.something.example.com?來訪問這個樣例網(wǎng)站了。這里給出我的例子:http://react.app.gianthard.rocks/

更多功能

captainduckduck 還能跟代碼托管系統(tǒng),例如:Github、Gitlab 通過 WebHook 集成,實現(xiàn)持續(xù)的部署,關(guān)于更詳細的介紹,請看項目 Wiki:https://github.com/githubsaturn/captainduckduck/wiki


參考列表:

  • https://github.com/githubsaturn/captainduckduck/wiki/Getting-Started


原文地址:?https://www.cnblogs.com/JacZhu/p/8463663.html


.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的超级简便的容器化部署工具(使用 ASP.NET Core 演示)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。