aspnetcore 2.1 發布到樹莓派3linux的艱辛路程


發布至docker for windows.

提示:

image operating system "windows" cannot be used on this platform

解決:

網上查了,說是運行環境不對,要在win虛擬機上執行,都是把docker的環境切換成windows。

不過我們如果在創建項目的時候,選擇docker文件是“linux”版本,就不需要windows版本,所以我們保持docker默認的linux版本,只需要確保新建項目時生成的DockerFile,不是基於windows就好。

 

由於是樹莓派,這里准備把aspnetcore2.1項目,發布為 linux-arm 方式。

# 首先,定位到要發布的項目根目錄,也就是csproj文件所在位置,按住shift鍵右擊,選擇在此處打開命令行/powershell,兩個選項差不多這個看系統設定。
# 以 linux-arm 方式發布
dotnet publish -c Release -r linux-arm

之后,我們將目光放到樹莓派上,我用的是三代,也就是ARMv7,所以core sdk是沒法裝的,只能使用runtime的方式,所以最簡單的DockerFile如下:

# 添加基礎鏡像:docker會從網絡下載這個鏡像
FROM microsoft/dotnet:2.1-sdk-stretch-arm32v7 AS build
MAINTAINER suntai
#容器中系統的工作空間
WORKDIR /app
#拷貝當前文件夾下的文件到容器中系統的工作空間(注意:“.”后面有空格)
COPY . /app

#設置程序要偵聽的端口
EXPOSE 80
# 下面這里是dotnetcore runtimez執行方式
ENTRYPOINT ["./WebCoreHost"]

之后就可以通過樹莓派開啟ssl,用sftp從微軟平台傳文件到樹莓派的linux平台了。當然要傳輸的目錄就是剛才生成的目錄,則你可能要拷貝的目錄就是

bin\Release\netcoreapp2.1\linux-arm\publish\

先直接運行下試試,進入我們程序所在位置。

# 我們先把程序入口點設置為可運行,當然你可以設置權限為755,也可以用+x方式
sudo chmod +x ./WebCoreHost
# 然后我們基於runtime執行
./WebCoreHost
# aspnetcore runtime會執行程序,如果什么都不管的話,是啟用5000端口。

當然,之后如果你想結束程序測試,或者端口被占了,可以kill掉程序

# 顯示占用端口的程序
sudo netstat -ltp
# 結束指定程序,比如說程序標識是233
sudo kill 233

在樹莓派上創建容器並運行程序,注意句點的位置,表示操作當前目錄(linux docker for aspnetcore)

# 將當前目錄添加到為docker鏡像,起一個別名叫做aspnetapp。
docker build
-t aspnetapp .
# 以關閉后自動銷毀的方式,啟動一個容器,偵聽外部的8000端口,並轉發至程序內部的80端口 docker run
--rm -it -p 8000:80 aspnetapp

提升當前操作用戶操作Docker的權限,不需要sudo,也能解決 permission denied

# 如果還沒有 docker group 就添加一個
sudo groupadd docker

# 將用戶加入該 group 內。然后退出並重新登錄就生效啦 sudo gpasswd -a ${USER} docker

# 重啟 docker 服務 sudo service docker restart

# 切換當前會話到新 group 或者重啟 X 會話 newgrp - docker

常用的Docker容器和鏡像操作

# 停用全部正在運行的容器
docker stop $(docker ps -q)

# 刪除全部容器
docker rm $(docker ps -aq)

# 一條命令實現停用並刪除容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)

# 刪除所有鏡像
docker rmi $(docker images -q)

# 停止並刪除none鏡像
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM