日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Mac的Docker中运行DotNetCore2.0

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Mac的Docker中运行DotNetCore2.0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近學習Angular4,服務端準備使用DotNetCore API來實現,本文簡單介紹下在Mac中怎樣將DotNetCore程序部署在Docker中,并使用Nginx做反向代理讓程序可以跑起來。

具體步驟如下

  • 安裝Docker

  • 拉取DotNetCore鏡像

  • 使用VS For Mac創建DotNetCore應用

  • 發布應用到Docker

  • 安裝Nginx

  • 配置Nginx代理Docker中的DotNetCore應用

  • 常用命令


    docker pull 鏡像名稱 #拉取鏡像

    docker rm -f 容器id #強制刪除容器

    docker rmi imageid #刪除鏡像

    docker logs -f 容器ID #查看容器日志

    docker ps -a #查看所有的容器

    docker attach 容器id #進入到容器

    docker build -t s2appadmin . #使用Dockerfile文件編譯Docker

    dotnet publish #發布dotnetcore應用

    dotnet run #啟動dotnetcore應用

    dotnet *.dll #在發布后的目錄中執行dotnet 程序集的dll文件名,啟動應用

    nginx -v #查看nginx版本

    nginx -s reload #重新加載nginx

    nginx -s stop #停止nginx


    Mac中安裝Docker

    在下面鏈接中下載Mac版的Docker安裝文件進行Docker的安裝
    https://docs.docker.com/docker-for-mac/install/

    安裝成功后,在系統的頂欄中可以看到下圖代表安裝成功:

    在終端中執行docker --version?查看下Doker的版本


    fengwei@localhost:~$ docker --version

    Docker version 17.06.2-ce, build cec0b72


    在Docker中拉取NetCore鏡像

    直接執行下面命令,拉取最新版本的microsoft/dotnet鏡像


    docker pull microsoft/dotnet:latest


    啟動一個容器實例


    docker run -itd -p 5000:5000 microsoft/dotnet


    因為DotNetCore的默認端口監聽為5000,所以將容器的5000端口映射到宿主機到5000端口。啟動成功后執行docker ps -a?,如一切順利,可以看到如下圖所示:

    主要關注STATUS,狀態為up表示是正常啟動,否則通過docker logs -f 容器id來查看相關日志,通常可以看到容器沒有啟動成功的錯誤日志,然后Google之。

    創建DotNetCore應用

    在創建應用之前先將VS For Mac升級到最新版本,因為稍微老一點的版本不支持NetCore 2.0,即便是安裝了最新的dotnet-sdk-2.0.0,最后發布的程序運行在Docker中時會遇到各種問題。所以為了避免麻煩,先升級VS。

    在VS中創建新項目,選擇API項目:

    我的API項目的名稱為S2AppAdmin,在終端中進入到項目的目錄中,執行dotnet publish,如下圖:

    在終端中進入到publish目錄中,執行dotnet S2AppAdmin.dll,如下圖:

    可以看出已經監聽了5000端,現在在瀏覽器中輸入http://localhost:5000/api/values/get,可以看到API接口的返回值已經在界面顯示了。

    發布應用到Docker

    在網上找了很多資料,都是使用Dockerfile來發布應用到Docker中,用此方法試過很多次,但沒有運行成功,后面找到原因再單獨開篇來介紹,下面介紹另一種方法。

    前面已經使用docker run?命令運行起一個Docker實例來,容器id為:3be4cfc30126,執行下面命令進入到容器中:


    docker attach 3be4cfc30126


    進入到home目錄后,使用mkdir s2app命令創建s2app目錄,如下圖:

    執行exit,退出容器回到宿主環境,進入到S2AppAdmin項目的目錄中,執行下面命令將publish的文件復制到容器中


    docker cp bin/Debug/netcoreapp2.0/publish/ hardcore_leavitt:/home/s2app/


    注意:上面的hardcore_leavitt為容器的名稱。

    再次執行docker attach 3be4cfc30126進入容器,在publish目錄中執行dotnet S2AppAdmin.dll,如下圖:

    這時在宿主環境中訪問http://localhost:5000/api/values/get,發現無法訪問,說明容器和宿主沒有打通。

    在VS中打開Program.cs文件,添加.UseUrls("http://*:5000"),如下圖:

    在項目目錄下執行下面命令:


    dotnet publish

    docker cp bin/Debug/netcoreapp2.0/publish/ hardcore_leavitt:/home/s2app/


    在容器內執行:


    dotnet S2APPAdmin.dll


    再在瀏覽器中訪問http://localhost:5000/api/values/get,發現結果已經可以正常顯示了。

    Nginx安裝

    使用brew來安裝Nginx,至于什么是brew,自行去Google。下面先看幾個brew的常用命令


    brew search nginx #brew 搜索軟件

    brew install nginx #brew 安裝軟件

    brew uninstall nginx #brew 卸載軟件

    sudo brew info nginx #查看安裝信息

    brew list #查看已經安裝的軟件


    安裝成功后,輸入nginx -v,可以看到nginx的版本信息

    在/usr/local/etc/nginx目錄中找到并打開nginx.conf文件,添加如下代碼:


    server {

    listen ? ? ? 8000;

    #listen ? ? ? somename:8080;

    server_name ?localhost;

    location / {

    proxy_pass http://localhost:5000;

    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;

    }

    }


    如下圖:

    正常情況下,在瀏覽器中輸入http://localhost:8000/api/values/get,可以看到API的輸出結果。

    常見問題

    問題:nginx-1.8.0 already installed, it’s just not linked


    解決:執行命令:brew link nginx


    問題:出現如下錯誤信息:


    Error: The `brew link` step did not complete successfully

    The formula built, but is not symlinked into /usr/local

    Could not symlink share/man/man8/nginx.8

    /usr/local/share/man/man8 is not writable.

    解決: /usr/local/share/man/man8 ?設置權限


    相關文章:?

    • .NET Core 2.0 正式發布信息匯總

    • .NET Standard 2.0 特性介紹和使用指南

    • .NET Core 2.0 的dll實時更新、https、依賴包變更問題及解決

    • .NET Core 2.0 特性介紹和使用指南

    • Entity Framework Core 2.0 新特性

    • 體驗 PHP under .NET Core

    • .NET Core 2.0使用NLog

    • 升級項目到.NET Core 2.0,在Linux上安裝Docker,并成功部署

    • 解決Visual Studio For Mac Restore失敗的問題

    • ASP.NET Core 2.0 特性介紹和使用指南

    • .Net Core下通過Proxy 模式 使用 WCF

    • .NET Core 2.0 開源Office組件 NPOI

    • ASP.NET Core - Razor頁面之Handlers處理方法

    • ASP.NET Core Razor頁面 vs MVC

    • Razor Page–Asp.Net Core 2.0新功能 ?Razor Page介紹

    • ASP.Net Core 2.0中的Razor Page不是WebForm

    • Error Handling in ASP.NET Core

    • ASP.NET Core Razor 視圖組件

    原文地址:http://fwhyy.com/2017/09/run-netcore-two-in-mac-docker/


    .NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的在Mac的Docker中运行DotNetCore2.0的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。