Asp.Net Core&Docker部署到樹莓派3B中

  花了一點時間將吃灰數月的樹莓派裝上了Docker,並在容器中部署了一個Asp.Net Core應用程序,經過花生殼映射樹莓派中的程序,可使用外網訪問樹莓派,玩起來頗有意思(外網訪問地址:http://aspnetcore.online/,訪問不通可能樹莓派斷電了),過程當中發現了一點問題,或許對於一樣路線的朋友有所幫助,特此寫出玩轉過程。html

  碼雲Demo地址:https://gitee.com/530521314/ControlEvent.gitjava

 

1、樹莓派安裝操做系統

  一、進入官網下載操做系統:https://www.raspberrypi.org/downloads/,我使用了官方的Raspbian系統,而且選擇了無界面的輕量版Raspbian Stretch Lite.linux

  

  二、下載格式化SD卡的工具:https://www.sdcard.org/downloads/formatter_4/eula_windows/git

  三、下載將系統燒錄到SD卡中的工具Win32 DiskImager:http://sourceforge.net/projects/win32diskimager/,選擇系統磁盤路徑地址,選擇卡,而後執行Write便可,等待幾分鐘,便完成燒錄工做github

   

  四、作一些配置工做,方便啓動樹莓派後能夠快速玩轉docker

   4.一、啓動SSH,在卡分區內建立一個名爲ssh的文件夾便可windows

   4.二、設置無線鏈接,本次我沒有使用外接顯示器到樹莓派中,使用Putty工具直接無線鏈接,我的感受更爲方便,在卡內boot文件夾內,建立一個wpa_supplicant.conf的文件,並寫下以下內容,該內容在樹莓派通電後會由系統自動添加到/etc/wpa_supplicant/wpa_supplicant.conf中,設置完畢後即可以插入到樹莓派,開始通電了服務器

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

//WiFi沒有密碼
network={
ssid="你的無線網絡名稱(ssid)"
    key_mgmt=NONE
}

//WiFi使用WEP加密
network={
    ssid="無線網絡名稱(ssid)"
    key_mgmt=NONE
    wep_key0="wifi密碼"
}

//WiFi使用WPA/WPA2加密
network={
    ssid="無線網絡名稱(ssid)"
    key_mgmt=WPA-PSK
    psk="wifi密碼"
}

//以個人舉例(priority鏈接優先級最高):
network={
    ssid="Yang1802"
    key_mgmt=WPA-PSK
    psk="xxxxxxxx"
    priority=1
}

   4.三、使用Putty鏈接樹莓派,樹莓派ip地址能夠找辦法查看(如我使用的華爲路由器,則能夠登陸路由器管理平臺查看),使用帳號pi,密碼raspberry完成登陸,開始校訂樹莓派時間微信

// 設置時區爲 亞洲(Asia) 上海(Shanghai)
sudo dpkg-reconfigure tzdata
// 啓動 NTP 使計算機時鐘與 Internet 時間服務器同步
sudo timedatectl set-ntp true

   五、切換到root帳號,方便操做網絡

sudo su

  

2、樹莓派安裝Docker

   一、開始安裝Docker,因爲樹莓派使用的是ARM板,所以在安裝Docker時,須要使用ARM板的安裝教程:https://docs.docker.com/install/linux/docker-ce/debian/#install-using-the-convenience-script,使用提供的安裝腳本完成安裝便可,須要等待一些時間。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

  二、安裝Git工具,安裝Git的目的是用於下載碼雲上的代碼到樹莓派中,雖然這個環節是有點冗餘的,當我配置好了一臺Jenkins服務器後,徹底可使用Jenkins服務器的功能將須要的鏡像生產完成,所以這個環節就顯得不這麼重要了,可是,若是沒有Jenkins服務器,那麼這個環節就不得不進行了,畢竟須要將代碼轉移到樹莓派中,或是開發環境中開發完畢,使用ftp轉移到樹莓派中等多種方式實現,使用以下命令安裝git工具。

sudo apt-get install git

 

3、使用Dockerfile編譯鏡像並生成容器

   一、新建應用程序,按照約定的標準化應用程序構建方式完成項目搭建(前幾篇文章中講到了),具體的項目結構能夠從碼雲中查看。

  

  二、增長Dockerfile並修改默認的Dockerfile內容,因爲樹莓派使用的是Arm板子,所以對於.net core運行環境也有所不一樣,在Dockerfile中須要指定發佈目標平臺,具體Dockerfile以下,使用的基礎鏡像能夠從dotnet組織提供的示例中找到:https://github.com/dotnet/dotnet-docker,我針對該示例中有的Dockerfile作了一些改動,以適應項目結構的須要。

FROM microsoft/dotnet:2.2-sdk-stretch-arm32v7 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY ControlEvent.Web.csproj ./ControlEvent.Web/
WORKDIR /app/ControlEvent.Web
RUN dotnet restore

# copy and build app and libraries
WORKDIR /app/
COPY . ./ControlEvent.Web/
WORKDIR /app/ControlEvent.Web
RUN dotnet publish -c Release -r linux-arm -o out

FROM microsoft/dotnet:2.2-runtime-deps-stretch-slim-arm32v7 AS runtime
WORKDIR /app
COPY --from=build /app/ControlEvent.Web/out ./
ENTRYPOINT ["./ControlEvent.Web"]

  三、提交代碼,在樹莓派中使用Git克隆項目獲取代碼,並進入到Dockerfile層級使用命令構建鏡像

  

  使用以下命令構建鏡像,個人目標鏡像名稱爲controlevent,這次構建要花費點時間,須要下載相關的基礎鏡像,下一次構建時會很快了

docker build --pull -t controlevent .

  四、使用以下命令生成容器,本次指定了-it參數,在生成完畢後能夠查看控制檯輸出,直接按Ctrl Q和P退出便可,也可直接使用-d參數後臺運行

docker run --rm -it -p 9527:80 controlevent

  

  五、使用ip地址及端口訪問,若是綁定了花生殼,而且在花生殼中作了本地映射,也能夠直接使用域名加端口直接訪問樹莓派中的服務

 至此,本次樹莓派中安裝Docker並部署Asp.Net Core應用程序就完成了。

 

 本文地址:http://www.javashuo.com/article/p-vxoxzkmv-cw.html

 歡迎關注微信訂閱號,有新的文章將同步到訂閱號中

  

2019-1-7,望技術有成後能回來看見本身的腳步
相關文章
相關標籤/搜索