查看: 2075|回复: 1

[经验] Asp.Net Core&Docker部署到树莓派3B中

[复制链接]
  • TA的每日心情

    2020-3-6 09:52
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-2-19 11:01:52 | 显示全部楼层 |阅读模式
    分享到:
      花了一点时间将吃灰数月的树莓派装上了Docker,并在容器中部署了一个Asp.Net Core应用程序,通过花生壳映射树莓派中的程序,可以使用外网访问树莓派,玩起来很有意思(外网访问地址:http://aspnetcore.online/,访问不通可能树莓派断电了),过程中发现了一点问题,或许对于同样路线的朋友有所帮助,特此写出玩转过程。

    一、树莓派安装操作系统
      1、进入官网下载操作系统:https://www.raspberrypi.org/downloads/,我使用了官方的Raspbian系统,并且选择了无界面的轻量版Raspbian Stretch Lite.
    1.png

     2、下载格式化SD卡的工具:https://www.sdcard.org/downloads/formatter_4/eula_windows/
      3、下载将系统烧录到SD卡中的工具Win32 DiskImager:http://sourceforge.net/projects/win32diskimager/,选择系统磁盘路径地址,选择卡,然后执行Write即可,等待几分钟,便完成烧录工作
    2.png
     4、做一些配置工作,方便启动树莓派后可以快速玩转
       4.1、启动SSH,在卡分区内创建一个名为ssh的文件夹即可
       4.2、设置无线连接,本次我没有使用外接显示器到树莓派中,使用Putty工具直接无线连接,个人感觉更为方便,在卡内boot文件夹内,创建一个wpa_supplicant.conf的文件,并写下如下内容,该内容在树莓派通电后会由系统自动添加到/etc/wpa_supplicant/wpa_supplicant.conf中,设置完毕后便可以插入到树莓派,开始通电了
    1. country=CN
    2. ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    3. update_config=1

    4. //WiFi没有密码
    5. network={
    6. ssid="你的无线网络名称(ssid)"
    7.     key_mgmt=NONE
    8. }

    9. //WiFi使用WEP加密
    10. network={
    11.     ssid="无线网络名称(ssid)"
    12.     key_mgmt=NONE
    13.     wep_key0="wifi密码"
    14. }

    15. //WiFi使用WPA/WPA2加密
    16. network={
    17.     ssid="无线网络名称(ssid)"
    18.     key_mgmt=WPA-PSK
    19.     psk="wifi密码"
    20. }

    21. //以我的举例(priority连接优先级最高):
    22. network={
    23.     ssid="Yang1802"
    24.     key_mgmt=WPA-PSK
    25.     psk="xxxxxxxx"
    26.     priority=1
    27. }
    复制代码
       4.3、使用Putty连接树莓派,树莓派ip地址可以找办法查看(如我使用的华为路由器,则可以登录路由器管理平台查看),使用账号pi,密码raspberry完成登录,开始校正树莓派时间
    1. // 设置时区为 亚洲(Asia) 上海(Shanghai)
    2. sudo dpkg-reconfigure tzdata
    3. // 启动 NTP 使计算机时钟与 Internet 时间服务器同步
    4. sudo timedatectl set-ntp true
    复制代码
     5、切换到root账号,方便操作
    1. sudo su
    复制代码

    二、树莓派安装Docker
      1、开始安装Docker,由于树莓派使用的是ARM板,因此在安装Docker时,需要使用ARM板的安装教程:https://docs.docker.com/install/linux/docker-ce/debian/#install-using-the-convenience-script,使用提供的安装脚本完成安装即可,需要等待一些时间。
    1. $ curl -fsSL https://get.docker.com -o get-docker.sh
    2. $ sudo sh get-docker.sh
    复制代码
      2、安装Git工具,安装Git的目的是用于下载码云上的代码到树莓派中,虽然这个环节是有点冗余的,当我配置好了一台Jenkins服务器后,完全可以使用Jenkins服务器的功能将需要的镜像生产完成,因此这个环节就显得不这么重要了,但是,如果没有Jenkins服务器,那么这个环节就不得不进行了,毕竟需要将代码转移到树莓派中,或是开发环境中开发完毕,使用ftp转移到树莓派中等多种方式实现,使用如下命令安装git工具。
    1. sudo apt-get install git
    复制代码

    三、使用Dockerfile编译镜像并生成容器
       1、新建应用程序,按照约定的标准化应用程序构建方式完成项目搭建(前几篇文章中讲到了),具体的项目结构可以从码云中查看。
    3.png

      2、增加Dockerfile并修改默认的Dockerfile内容,由于树莓派使用的是Arm板子,因此对于.net core运行环境也有所不同,在Dockerfile中需要指定发布目标平台,具体Dockerfile如下,使用的基础镜像可以从dotnet组织提供的示例中找到:https://github.com/dotnet/dotnet-docker,我针对该示例中有的Dockerfile做了一些改动,以适应项目结构的需要。
    1. FROM microsoft/dotnet:2.2-sdk-stretch-arm32v7 AS build
    2. WORKDIR /app

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

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

    12. FROM microsoft/dotnet:2.2-runtime-deps-stretch-slim-arm32v7 AS runtime
    13. WORKDIR /app
    14. COPY --from=build /app/ControlEvent.Web/out ./
    15. ENTRYPOINT ["./ControlEvent.Web"]
    复制代码
     3、提交代码,在树莓派中使用Git克隆项目获取代码,并进入到Dockerfile层级使用命令构建镜像
    4.png
    使用如下命令构建镜像,我的目标镜像名称为controlevent,此次构建要花费点时间,需要下载相关的基础镜像,下一次构建时会很快了
    1. docker build --pull -t controlevent .
    复制代码
     4、使用如下命令生成容器,本次指定了-it参数,在生成完毕后可以查看控制台输出,直接按Ctrl Q和P退出即可,也可直接使用-d参数后台运行
    1. docker run --rm -it -p 9527:80 controlevent
    复制代码
    5.png
     5、使用ip地址及端口访问,如果绑定了花生壳,并且在花生壳中做了本地映射,也可以直接使用域名加端口直接访问树莓派中的服务
    6.png
    至此,本次树莓派中安装Docker并部署Asp.Net Core应用程序就完成了。

    本文作者 微笑刺客D
    来源 博客园






    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2019-4-23 12:49:49 | 显示全部楼层
    写的很详细啊 522.jpg
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 13:10 , Processed in 0.135214 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.