.net4.5部署到docker容器


.net4.5部署到docker容器

  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 #Docfile所在目錄,它一般在項目根目錄
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM