使用docker來部署asp.net core的程序

使用docker來部署asp.net core程序

暫不介紹docker是個什麼東西?不知道的本身百度。html

第一步安裝docker:

個人docker是裝在centos7系統上,windows上個人也用過,可是在windows上動不動就給我死掉。最後換了linux系統。linux

具體在linux上如何安裝docker參考下面的連接。nginx

https://www.cnblogs.com/yufeng218/p/8370670.htmldocker

第二步拉取dotnet最新鏡像:

docker pull microsoft/dotnet

而後等待拉去鏡像。若是是本身電腦的虛擬機的話,會有點慢。而後百度docker更改鏡像庫地址。windows

而後拉去完成後 使用這個命令centos

docker images

來查看當前的拉去後鏡像。服務器

拉去制定版本的的dotnet鏡像或者拉去asp.net core 運行時.,本身去百度(懶得打字)app

當前的dotnet鏡像已經拉去好了。咱們來嘗試運行一下,輸入一下命令asp.net

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。

相關文章
相關標籤/搜索