Linux下基於Docker部署.Net Core web api項目


Docker的好處我就不說啦,問問度娘就知道了😄

在動手之前我假設您已經安裝了Docker(Linux環境)

准備好一個web api項目,如果您還不知道怎樣用vs建web api項目,請看此篇博客

https://www.cnblogs.com/zhangnever/p/11915509.html

如果還沒安裝Docker請先別急,移步至此地址安裝

https://www.runoob.com/docker/centos-docker-install.html

在這里先說幾條Docker的命令,因為一會兒會用到

1.docker ps -a  --查看所有的容器
2.docker ps  --查看正在運行的容器
3.docker images  --查看所有的鏡像
4.docker logs 容器id  --查看指定容器的日志
5.docker pull 鏡像名 --拉取指定鏡像

首先在Program類添加如下代碼,UseUrls方法設置ip和端口號(可不和我一樣),這樣的話發布之后外網就可對其進行訪問。一定要加上這句代碼!!!

.UseUrls("http://*:9659")

 然后右鍵-屬性發布項目

 進入發布后的文件夾,將發布后的所有文件copy出來,上傳至Linux服務器,我用的是Xftp,在此之前在tmp目錄下新建一個文件夾(名稱隨意)

 然后將xml文件copy進來,不然發布會報錯。xml文件找不到

 打開Linux命令行終端工具,我用的是Xshell.切換到項目根目錄下,Vim創建Dockerfile文件,當然你也可以右鍵新建文件也行

 寫入這四句命令

FROM microsoft/dotnet:2.2-aspnetcore-runtime

WORKDIR /app

EXPOSE 9659

COPY . . 

CMD ["dotnet", "CoreFrame.dll"

 然后拉取鏡像,我這是.net core 2.2的項目,依據你的項目版本來

docker pull microsoft/dotnet:2.2-aspnetcore-runtime

我這邊已經拉取過了,所以會提示我,已經存在最新的microsoft/dotnet:2.2-aspnetcore-runtime,你要稍微等個幾分鍾...

拉取完成之后你可以用docker images命令看看有沒有這個鏡像

[root@instance-1epqf1sp core]# docker images
REPOSITORY                             TAG                      IMAGE ID            CREATED             SIZE
docker.io/microsoft/dotnet             2.2-aspnetcore-runtime   594143f47344        2 weeks ago         261 MB

接下來執行下面這條命令,創建我們的項目鏡像,"."代表使用當前目錄下的Dockerfile創建鏡像

docker build -t apiproject .

 再使用docker images命令看看是否創建

[root@instance-1epqf1sp core]# docker images
REPOSITORY                             TAG                      IMAGE ID            CREATED              SIZE
apiproject                             latest                   f0036423060a        About a minute ago   301 MB
docker.io/microsoft/dotnet             2.2-aspnetcore-runtime   594143f47344        2 weeks ago          261 MB

無誤后執行下面這條命令,啟動容器,成功之后會有一長串字符

docker run -d -p 9659:9659 --name corewebapi apiproject
--corewebapi是容器名稱
--apiproject是依賴的鏡像

 查看運行的容器

 瀏覽器中就可以打開swagger文檔了

 如果容器沒有運行的話,要查看錯誤日志,看看報的什么錯,再解決。如果你按照我寫的步驟來的話應該不會報錯。😊

 晚安!🌙


免責聲明!

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



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