Raspberry PiにDockerで.NET Core環境を構築してみた
ラズパイでC#を動かしたくて ラズパイ内に.NET Core環境をDockerで構築してみました。
バージョン
- .NET Core SDK 2.1
ラズパイの環境
- Raspberry Pi 3 Model B
- Raspbian 9.1
Dockerインストール
まずはDockerをインストールします。
以下のコマンド1つでインストールできました。
$ curl -sSL https://get.docker.com | sh
$ docker --version Docker version 18.06.0-ce, build 0ffa825
これでDockerはインストールできましたが、dockerコマンドがroot権限がないと使えないので以下のコマンドでdockerグループにユーザーを追加します。
$ sudo usermod -aG docker ユーザー名
これでsudoを打たなくてもdockerコマンドを実行することができます。
.NET Coreが動作するコンテナの準備
次は.NET Coreが動作するDockerコンテナを立てます。
色々調べてたらラズパイで動きそうなarm32v7対応のDockerfileが公式にありましたのでこれを使いました。
※追記 Dockerfileのリンクが切れていたので更新しました。
バージョンは3.1です。
Dockerfileのビルド
先程のURLのDockerfileを使ってビルドし、イメージを作ります。
$ docker build -t dotnet .
コンテナの起動
$ docker run -it --name my-dotnet dotnet
コンテナを起動できたらdotnetコマンドを実行してみます。
# dotnet --version 2.1.302
.NET Coreがちゃんとインストールできているのが確認できました。
サンプルプログラムを動かす
.NET Coreの環境ができたのでサンプルプログラムを動かしてみます。
プロジェクト作成
dotnet new
コマンドでプロジェクトを新規作成します。
-o
オプションで出力するプロジェクトの配置場所を指定。
今回はコンソールアプリケーションを実行したいのでconsole
を指定しました。
作成できるテンプレートはdotnet new -l
で確認できます。
# dotnet new console -o Sample The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on Sample/Sample.csproj... Restoring packages for /root/Sample/Sample.csproj... Installing Microsoft.NETCore.DotNetAppHost 2.1.0. Installing Microsoft.NETCore.DotNetHostResolver 2.1.0. Installing Microsoft.NETCore.DotNetHostPolicy 2.1.0. Installing NETStandard.Library 2.0.3. Installing Microsoft.NETCore.Platforms 2.1.0. Installing Microsoft.NETCore.Targets 2.1.0. Installing Microsoft.NETCore.App 2.1.0. Generating MSBuild file /root/Sample/obj/Sample.csproj.nuget.g.props. Generating MSBuild file /root/Sample/obj/Sample.csproj.nuget.g.targets. Restore completed in 18.24 sec for /root/Sample/Sample.csproj. Restore succeeded.
実行すると-o
で指定したディレクトリの中にこんな感じでファイルができています。
# ls Program.cs Sample.csproj obj
Program.csの中身
using System; namespace Sample { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
それではdotnet run
コマンドでプログラムを実行してみましょう。
コマンドを実行する前に.csproj
ファイルがあるディレクトリまで移動します。
もしくは--project
オプションでプロジェクトを指定することもできます。
# cd Sample # dotnet run Hello World!
実行までに多少時間がかかるけど正常に動いてくれました!