LoginSignup
8
6

More than 5 years have passed since last update.

.NetCoreをRaspberry Pi上のdockerでパッと動かすPiBakeryレシピ

Last updated at Posted at 2019-02-11

.NetCoreをRaspberry Pi上のdockerでパッと動かしたい

Announcing .NET Core 2.1 | .NET Blogでアナウンスされたように、.NetCore2.1からAlpineLinuxとARM32がサポートされた。これにより、Raspberry Piのdocker上で.NetCoreを動作させることが可能になった。PiBakeryを使って、docker上で動く.NetCoreの環境をRaspberry Pi上に作ってみる。

PiBakery?

Raspberry PiはOSインストールがちょっと面倒だ。PiBakeryを使えばScratch風のGUIで簡単にセットアップの手順を設定し、ボタン1つでSDカードに書き込みできる。書き込み終わったSDカードをRaspberry Piにセットし、電源を入れればセットアップが全て完了するという優れものだ。Wifiの設定もできるので外付けのキーボードもマウスもつけなくても、即ssh接続が可能になる。じゃあどうせならPiBakeryで、.NetCoreが動くところまで一気に作ってみよう!ということでやってみた。

PiBakeryレシピの作成

今回最終的に作ったものはこちら

動作確認環境
Raspberry Pi: Raspberry Pi 3 Model B+
OS: Raspbian Lite (stretch)
Release: 9.3
HostOS: Windows 10 Pro (64bit)
PiBakery: v0.3.8

1. 基本のセットアップ

PiBakeryを使ってRaspberryPi Zero Wをヘッドレスでセットアップする
こちらの記事を参考にさせて頂きサクッと。こいつをベースに肉付けしていく。

※最近のバージョンのPiBakeryではdhcpcdの再起動処理がコメントアウトされていて、後ろのブロックにインターネット接続する処理があるとうまくいかなかった。コメントアウトされている以下の処理をSetup Wifi の後ろにRunCommandで書けば再起動される。

systemctl daemon-reload && sleep 5
systemctl restart dhcpcd && sleep 5

2. IPアドレス設定

固定IPをRapsberryPiに振る。/etc/dhcpcd.confにstatic ipの情報を追記するため、以下のアドレスを適切に書き換えてPiBakeryのRunCommandで追加。

echo "interface wlan0" >> /etc/dhcpcd.conf # eth0(LAN cable) or wlan0(wifi)
echo "static ip_address=192.168.xxx.xxx/24" >> /etc/dhcpcd.conf 
echo "static routers=192.168.xxx.xxx" >> /etc/dhcpcd.conf
echo "static domain_name_servers=192.168.xxx.xxx" >> /etc/dhcpcd.conf

[参考]

3. raspi-config(非対話モードで実行)

raspi-configを非対話モードで実行し、ロケールやメモリ節約の設定を行っておく。

## locale
sudo raspi-config nonint do_change_locale ja_JP.UTF-8
## timezone
sudo raspi-config nonint do_change_timezone Asia/Tokyo
## wifi country
sudo raspi-config nonint do_wifi_country JP
## Save memory usage
### Memory for GPU
sudo raspi-config nonint do_memory_split 16
### Disable Camera
sudo raspi-config nonint do_camera 1

[参考]

4. Docker環境構築

以下をPiBakeryのコマンドとして追加。

# curlでdockerのinstallスクリプトを実行
curl -sSL https://get.docker.com | sh
# sudo権限なくてもdockerコマンド使えるようにdockerグループにpiユーザーを追加
sudo usermod -aG docker pi 
# 再起動
sudo systemctl daemon-reload
sudo systemctl restart docker

[参考]

5. .NetCoreイメージの取得

.Net Core 2.1 の SDK と Runtime イメージをpull。他にもほしいイメージがあれば同様に取得できる。

docker pull microsoft/dotnet:2.1-runtime
docker pull microsoft/dotnet:2.1-sdk

[参考]

まとめ

Run Commandがずらずらと並ぶ結果になったので正直普通にシェルスクリプトを書いてそれを呼ぶように工夫するほうが良いと思う。もしくは、PiBakeryには自作のblockを登録する仕組みがあるので、自作ブロックを作っても良い。→作ってみた。

このあとは作成した.NetCoreアプリをスムーズに今回用意したRaspberry Pi上にデプロイし、リモートデバッグできるようにしたいが、とりあえず今回はここまで。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6