使用docker來部署asp.net core的程序
使用docker來部署asp.net core程序
暫不介紹docker是個什麽東西?不知道的自己百度。
第一步安裝docker:
我的docker是裝在centos7系統上,windows上我的也用過,但是在windows上動不動就給我死掉。最後換了linux系統。
具體在linux上如何安裝docker參考下面的鏈接。
https://www.cnblogs.com/yufeng218/p/8370670.html
第二步拉取dotnet最新鏡像:
docker pull microsoft/dotnet
然後等待拉去鏡像。如果是自己電腦的虛擬機的話,會有點慢。然後百度docker更改鏡像庫地址。
然後拉去完成後 使用這個命令
docker images
來查看當前的拉去後鏡像。
拉去制定版本的的dotnet鏡像或者拉去asp.net core 運行時.,自己去百度(懶得打字)
當前的dotnet鏡像已經拉去好了。我們來嘗試運行一下,輸入一下命令
docker run -it 540aa875e6c2
上面命令的540aa875e6c2是我虛擬機上dotnet鏡像的ImageId,請各位輸入的自己機器上的。使用dokcer images 會顯示鏡像id的。
然後你會看到進入了一個這麽個東西
[root@iz2zefw4l0vyl0r786jwc1z ~]# docker run -it 540aa875e6c2 root@d286c33bedd5:/# ^C root@d286c33bedd5:/#
最常用的輸入dotent -version看看版本,還有其他命令。
到這裏我們的拉去基礎鏡像就完成了。
在這裏你會問,為什麽要拉取dotnet鏡像?
答:不拉去基礎鏡像的你的.net core根本用不了啊。不能運行啊。
第三步上傳.net core程序 到linux服務器。
隨便百度一個ftp工具,上傳到linux你想要的任何位置。
如果有人問,我想制定一個目錄上傳怎麽辦?
答:兩個辦法,1 你去看看linux創建目錄的命令,2;大部分ftp工具都自帶創建目錄按鈕,點一下就行了。
第四步制作你自己程序的docker鏡像。
要制作docker鏡像,就離不開一個叫Dockerfile東西。這個東西是什麽呢?我在這裏也不想介紹。還是自己去百度看看把。
進入到上傳.net core程序的目錄。
輸入命令
vi Dockerfile
沒有後綴,大小寫一直
輸入或者粘貼一下文本
FROM microsoft/dotnet:latest COPY . /app WORKDIR /app EXPOSE 80 ENTRYPOINT ["dotnet", "WebApplication4.dll"]
下面說一下我遇到的坑。
首先copy 後面一個 點,代表當前存放我們的程序的dll文件的目錄。 後面/app是把當前目錄重的文件拷貝到docker容器之中的那個目錄。這個目錄要與上面的WOKDIR 目錄一致。
EXPOSE用來指定端口,使容器內的應用可以通過端口和外界交互。
ENTRYPOINT 進入容器執行程序的命令。
第五步打包鏡像
輸入命令
docker build -t 你給這個鏡像取個名字 .
然會就會執行成功。
第六步啟動鏡像
輸入一下命令來啟動我們剛才打包的鏡像
docker run --name 容器名稱 -p 5000:80 -d 鏡像名稱或者鏡像id
然後使用
docker ps
命令,來查看,我們的鏡像是否啟動成功。
如果啟動不成功,你需要輸入一下命令
docker logs 容器名稱
來查看日誌。
在說下我遇到的幾個重點把。如果你看過doker run 的命令 你會發現 -p 要制定端口, 可是我們有在Dockerfile中寫了程序通信的端口啊?
答:如果你用我上面的那個run的命令,你Dockerfile中寫的EXPOSE 就不會其作用了。會強制使用 -p綁定的端口。
第七步使用Nginx來轉發我們的請求到容器
如何在centos 安裝nginx 在不說了,百度解決
找到nginx目錄。在centos上面nginx安裝默認目錄都是 /etc/nginx
在nginx目錄找到默認的配置文件。根據Nginx版本的不同,。默認文件的目錄也不同.
自己找找.
找到的話,把裏面 servier節點裏面的所有內容註釋了。
新建一個netcore.conf的配置文件
賦值粘貼一下內容
server { listen 80; location / { proxy_pass http://127.0.0.1:5001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
把裏面的 地址改成你自己的端口。 如果訪問的話初選502。百度linux關閉selinux。
使用docker來部署asp.net core的程序