.net4.5部署到(dao)docker容器
.net4.5部署到docker容器
- 部署到windows容器
- 部署到linux容器
部署到windows容器
由(you)于.net本身就是運(yun)行在windows平(ping)臺的(de),所以(yi)(yi)它與windows容器(qi)也是更(geng)加適合,你(ni)可以(yi)(yi)以(yi)(yi)iis鏡像為(wei)基(ji)礎,去編寫你(ni)的(de)Dockerfile文件,從而去構(gou)建(jian)你(ni)的(de).net項目(mu)鏡像。
- 兩個現成的例子
.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
- 為自己項目添加一個Dockerfile構建鏡像
FROM microsoft/aspnet
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
參考:
部署到linux容器
對于非.net core的(de)應(ying)用程序來說(shuo),要(yao)(yao)想在linux平臺運行(xing)需要(yao)(yao)安裝mono框架,這是(shi)在linux平臺運行(xing).net程序的(de)唯一方法(fa),那么如(ru)果想把(ba).net程序部署到linux容器(qi)里,也(ye)是(shi)一樣的(de)方法(fa)過(guo)程,你需要(yao)(yao)構(gou)建(jian)一個(ge)安裝有mono環境的(de)鏡像。
為自己的項目添加一個基于mono的Dockerfile
- 制作一個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$
- 制作一個.net web的Dockerfile并運行
前提:我們的web項目要想運行,需要有一個像IIS一種的服務器組件,在linux里我們一般使用jexus來實現這個功能,也就是說,我們的docker鏡像應該即有mono還要有jexus的集成,這個鏡像我們可以自己寫,也可以使用現成的鏡像
azraelrabbit/monupw,下(xia)面的(de)Dockerfile是把一(yi)個web項目monoMvc打包成一(yi)個鏡(jing)像(xiang)。
先把鏡像拉到本地
docker pull azraelrabbit/monupw
部署的步驟
- 建立Dockerfile文件,發布網站時應該帶上
- 發布網站
- 進行發布后的地址
- 打包 docker build . -t 鏡像名稱
- 啟動容器 docker run -d -p 8080:80 鏡像名稱
編寫Dockerfile文件
FROM azraelrabbit/monupw
EXPOSE 80
WORKDIR /data
COPY ./bin/ .
啟動你的容器(qi)(qi),對外訪(fang)問用(yong)8080端口(kou),容器(qi)(qi)內部(bu)是80端口(kou)
MacBook-Pro-6:monoMvc lind.zhang$ docker run -p 8080:80 monomvc
Starting ... OK