1. 程式人生 > >使用docker來部署asp.net core的程式

使用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的。

然後你會看到進入了一個這麼個東西

[[email protected] ~]# docker run -it 540aa875e6c2
[email protected]
:
/# ^C [email protected]:/#

最常用的輸入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。