Asp.Net CoreDocker部署到树莓派3B中
花了一點時間將吃灰數月的樹莓派裝上了Docker,并在容器中部署了一個Asp.Net Core應用程序,通過花生殼映射樹莓派中的程序,可以使用外網訪問樹莓派,玩起來很有意思(外網訪問地址:http://aspnetcore.online/,訪問不通可能樹莓派斷電了),過程中發現了一點問題,或許對于同樣路線的朋友有所幫助,特此寫出玩轉過程。
碼云Demo地址:https://gitee.com/530521314/ControlEvent.git
?
一、樹莓派安裝操作系統
1、進入官網下載操作系統:https://www.raspberrypi.org/downloads/,我使用了官方的Raspbian系統,并且選擇了無界面的輕量版Raspbian Stretch Lite.
2、下載格式化SD卡的工具:https://www.sdcard.org/downloads/formatter_4/eula_windows/
3、下載將系統燒錄到SD卡中的工具Win32 DiskImager:http://sourceforge.net/projects/win32diskimager/,選擇系統磁盤路徑地址,選擇卡,然后執行Write即可,等待幾分鐘,便完成燒錄工作
?
4、做一些配置工作,方便啟動樹莓派后可以快速玩轉
4.1、啟動SSH,在卡分區內創建一個名為ssh的文件夾即可
4.2、設置無線連接,本次我沒有使用外接顯示器到樹莓派中,使用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=NONEwep_key0="wifi密碼" }//WiFi使用WPA/WPA2加密 network={ssid="無線網絡名稱(ssid)"key_mgmt=WPA-PSKpsk="wifi密碼" }//以我的舉例(priority連接優先級最高): network={ssid="Yang1802"key_mgmt=WPA-PSKpsk="xxxxxxxx"priority=1 }4.3、使用Putty連接樹莓派,樹莓派ip地址可以找辦法查看(如我使用的華為路由器,則可以登錄路由器管理平臺查看),使用賬號pi,密碼raspberry完成登錄,開始校正樹莓派時間
// 設置時區為 亞洲(Asia) 上海(Shanghai) sudo dpkg-reconfigure tzdata // 啟動 NTP 使計算機時鐘與 Internet 時間服務器同步 sudo timedatectl set-ntp true? 5、切換到root賬號,方便操作
sudo su??
二、樹莓派安裝Docker
? 1、開始安裝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.sh2、安裝Git工具,安裝Git的目的是用于下載碼云上的代碼到樹莓派中,雖然這個環節是有點冗余的,當我配置好了一臺Jenkins服務器后,完全可以使用Jenkins服務器的功能將需要的鏡像生產完成,因此這個環節就顯得不這么重要了,但是,如果沒有Jenkins服務器,那么這個環節就不得不進行了,畢竟需要將代碼轉移到樹莓派中,或是開發環境中開發完畢,使用ftp轉移到樹莓派中等多種方式實現,使用如下命令安裝git工具。
sudo apt-get install git?
三、使用Dockerfile編譯鏡像并生成容器
?1、新建應用程序,按照約定的標準化應用程序構建方式完成項目搭建(前幾篇文章中講到了),具體的項目結構可以從碼云中查看。
2、增加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 outFROM microsoft/dotnet:2.2-runtime-deps-stretch-slim-arm32v7 AS runtime WORKDIR /app COPY --from=build /app/ControlEvent.Web/out ./ ENTRYPOINT ["./ControlEvent.Web"]3、提交代碼,在樹莓派中使用Git克隆項目獲取代碼,并進入到Dockerfile層級使用命令構建鏡像
使用如下命令構建鏡像,我的目標鏡像名稱為controlevent,此次構建要花費點時間,需要下載相關的基礎鏡像,下一次構建時會很快了
docker build --pull -t controlevent .4、使用如下命令生成容器,本次指定了-it參數,在生成完畢后可以查看控制臺輸出,直接按Ctrl Q和P退出即可,也可直接使用-d參數后臺運行
docker run --rm -it -p 9527:80 controlevent
5、使用ip地址及端口訪問,如果綁定了花生殼,并且在花生殼中做了本地映射,也可以直接使用域名加端口直接訪問樹莓派中的服務
至此,本次樹莓派中安裝Docker并部署Asp.Net Core應用程序就完成了。
?
本文地址:https://www.cnblogs.com/CKExp/p/10233780.html
歡迎關注微信訂閱號,有新的文章將同步到訂閱號中
?
2019-1-7,望技術有成后能回來看見自己的腳步轉載于:https://www.cnblogs.com/CKExp/p/10233780.html
總結
以上是生活随笔為你收集整理的Asp.Net CoreDocker部署到树莓派3B中的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: css如何各种中文字体如雅黑、黑体、宋体
 - 下一篇: 代理错误[WinError 10061]