1. 程式人生 > >在centos7上部署asp.net core

在centos7上部署asp.net core

先說直接在centos上部署asp.net core, 不使用docker

一, centos上安裝.net core, 參考: https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install dotnet-sdk-2.1

二, 把事先準備好的asp.net core web專案copy到centos上去(怎麼弄上去不贅述)

三, 進入Program.cs檔案所在目錄, 執行:

dotnet restore(這一步好像不要也行, 因為下一個命令就會預設執行這個命令)
dotnet build dotnet run --urls="http://*:3389"

  注意這裡的dotnet run後的引數, 我用的阿里雲, 如果不加後面的這個引數的話, 我通過我自己電腦上的瀏覽器死活訪問不了這個已經正常啟動了的Web伺服器, 但是在伺服器命令列裡用curl 又可以正常訪問, 沒搞明白.

 

在centos上使用docker執行asp.net core:

一, centos上安裝docker 環境(我伺服器上已經安裝好了,這裡就不多說了, 印象中不是太困難, 因為沒啥記憶, 如果很難, 應該印象深刻才是)

二, 在aspnet core 專案裡新建Dockfile, 要和Program.cs檔案在同一目錄下. (VS2017也可以在新建專案時預設生成Dockerfile, 專案建好後也可以右鍵, 新建Dockfiler, 不過這個好像不好用, 會讓後續步驟失敗, 堵心)

我用的如下:

//以官方最新映象為基礎
FROM microsoft/dotnet:latest
//進入到docker 映象裡的app目錄 WORKDIR
/app
//把外部機器(伺服器)當前目錄下的內容全copy到docker的app目錄下 COPY .
/app
//在docker裡執行這兩個命令 RUN dotnet restore RUN dotnet build EXPOSE
3389 ENV ASPNETCORE_URLS http://*:3389 ENTRYPOINT ["dotnet","run"]

三, 在伺服器上, Dockerfile所在目錄, 執行:

docker build -t myaspnetdemo .

四, docker images, 就可以看到剛剛生成的映象

五, 建立一個新的容器並執行,-d為後臺執行,-p 3389:3000, 前面為主機埠,後面是容器埠(不知為何, 我的伺服器只有3389外部可訪問, 用別的埠外部訪問不了)。docker_demo映象名

docker run -d -p 3389:3000 myaspnetdemo --urls="http://*:3389"

// 據說這樣可以執行, 我就不知道了, 反正我雖然執行起來了, 但是在外網是訪問不了的

測試過了這樣加上  --urls="http://*:3389"  後可以執行, 且外網可以訪問