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文檔了
如果容器沒有運行的話,要查看錯誤日誌,看看報的什麼錯,再解決。如果你按照我寫的步驟來的話應該不會報錯。😊
晚安!🌙