歡迎光臨
每天分享高質量文章

.net 4.5部署到docker容器

.NET FX 應用程式也是可以容器化的,容器化的選項有兩個:

  1. 部署到windows容器
  2. 部署到linux容器

部署到windows容器

由於.net本身就是執行在windows平臺的,所以它與windows容器也是更加適合,你可以以iis映象為基礎,去編寫你的Dockerfile檔案,從而去構建你的.net專案映象。

  1. 兩個現成的例子
    .net console程式
docker run --rm mcr.microsoft.com/dotnet/framework/samples:dotnetapp

.net web程式

docker run -it --rm -p 8000:80 --name aspnet_sample mcr.microsoft.com/dotnet/framework/samples:aspnetapp
  1. 為自己專案新增一個Dockerfile構建映象
FROM microsoft/aspnet
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .

參考:https://docs.microsoft.com/en-us/aspnet/mvc/overview/deployment/docker-aspnetmvc

部署到linux容器

對於非.net core的應用程式來說,要想在linux平臺執行需要安裝mono框架,這是在linux平臺執行.net程式的唯一方法,那麼如果想把.net程式部署到linux容器裡,也是一樣的方法過程,你需要構建一個安裝有mono環境的映象。

為自己的專案新增一個基於mono的Dockerfile

  1. 製作一個console app的Dockerfile並執行
FROM mono:latest
RUN mono --version
WORKDIR /app
COPY ./bin/Debug/ .
CMD [ "mono",  "monoApp.exe" ]

打包映象

cd monoapp
docker build . -t monoapp
docker run monoapp

執行結果

MacBook-Pro-6:monoApp lind.zhang$ docker run monoapp
Hello World!
MacBook-Pro-6:monoApp lind.zhang$
  1. 製作一個.net web的Dockerfile並執行

    前提:我們的web專案要想執行,需要有一個像IIS一種的伺服器元件,在linux裡我們一般使用jexus來實現這個功能,也就是說,我們的docker映象應該即有mono還要有jexus的整合,這個映象我們可以自己寫,也可以使用現成的映象azraelrabbit/monupw,下麵的Dockerfile是把一個web專案monoMvc打包成一個映象。

先把映象拉到本地

docker pull azraelrabbit/monupw

部署的步驟

  1. 建立Dockerfile檔案,釋出網站時應該帶上
  2. 釋出網站
  3. 進行釋出後的地址
  4. 打包 docker build . -t 映象名稱
  5. 啟動容器 docker run -d -p 8080:80 映象名稱

編寫Dockerfile檔案

FROM azraelrabbit/monupw
EXPOSE 80
WORKDIR /data
COPY ./bin/ .

啟動你的容器,對外訪問用8080埠,容器內部是80埠

MacBook-Pro-6:monoMvc lind.zhang$ docker run -p 8080:80 monomvc
Starting ... OK

原文地址:https://www.cnblogs.com/lori/p/10685107.html

已同步到看一看
贊(0)

分享創造快樂