はじめに
昔使ってた.NETCoreを使って、WebAPIでDockerを動かしてみたいと思いました。ちなみに私、.NET環境触るの久しぶりだったり、Docker初心者なので、間違ってる〜とか今はこんなのが主流だよ〜とかあったらご指摘いただけると嬉しいです
また、Docker良く分からないけど、なんか動かしてみたい〜っていうMSフレンズも実際にやってもらえたら嬉しいです。
TL;DR
- C#やWindowsServerを使っている方、.NETCoreやDockerを検討している方向けです。
- この記事を読むと、.NETCoreのWebAPIをDockerコンテナで実行できるようになります。
準備
- 環境
- macOS Mojave バージョン 10.14.6
※Windows でも適宜読み替えればできると思います。
- macOS Mojave バージョン 10.14.6
.NETCoreをインストール
.NETCore SDKからダウンロードします。
バージョンを確認すると...
dotnet --version
--version3.1.100
正常に.NETCore SDKのインストールが完了しました。
WebAPIのサンプルプロジェクトを作成
続いて、今回試すAPIのプロジェクトを作成します。
# プロジェクト作成 (my_docker_api は任意のプロジェクト名)
dotnet new webapi -o my_docker_api
動作確認
# プロジェクトに移動してlocalhost起動
cd my_docker_api/
dotnet run
サンプルとして用意されているWeatherForecast
に
https://localhost:5001/WeatherForecast
でアクセスすると...
Command + C
でlocalhostシャットダウン
Dockerイメージをビルド
準備
※Dockerをインストール(この記事では割愛)
docker --version
Docker version 19.03.5, build 633a0ea
VSCode拡張機能インストール(任意)
Dockerfile作成
Command + Shift + P
でコマンドパレットを開き
Docker: Add Docker Files to Workspace...
を選択
ASP.NET Core
> Linux
を選択すると自動で Dockerfile
が作成されます。
Dockerイメージをビルド
my_docker_api_image
は任意のイメージ名でOKです。
docker build -t my_docker_api_image -f Dockerfile .
数分かかりますが、最終的に Successfully
が出ていればOKです。
Dockerイメージの確認
docker images
コンテナーを実行する
docker run --rm -p 5000:80 my_docker_api_image my_docker_api
--rm
: このコンテナー実行後に自動的にコンテナを削除してくれます。不要なコンテナが残り続けるとストレージを圧迫します。
-p 5000:80
: ローカル端末の5000番ポートをDockerコンテナー内の80番ポートに接続します。
実行後にhttp://localhost:5000/WeatherForecast
にアクセスすると、Docker内のAPIを実行できることを確認できました。
先程、dotnet run
でローカル実行したときと同様のことがDockerコンテナで実行できることが分かります。
感想
これだけではDockerの旨味は感じられにくいが、Dockerで開発することができれば、そのままAWS ECS/Fargateを使ってデプロイできるみたい。(でも今は、.NETCore2系まで対応で3系はまだかな?) マイクロサービスやサーバーレスアプリケーションを作成するなら使いたい技術だと感じました。
〜後日談〜
Dockerには様々な使い方があります。例えば、開発環境をメンバー全員で揃えたいとか、サービス運用を楽にしたいとか。つまり、解決したい課題を明確にして自分がどのようにDockerを使いたいか把握することが大事なんだと気づきました。
参考にした記事
- Docker で ASP.NET Core ウェブアプリケーションを動かす @Nossa さん
- チュートリアル: NET Core アプリのコンテナー化
- チュートリアル: ASP.NET Core で Web API を作成する
私たちのチームで働きませんか?
エイチームは、インターネットを使った多様な技術を駆使し、幅広いビジネスの領域に挑戦し続ける名古屋の総合IT企業です。
そのグループ会社である株式会社エイチームブライズでは、一緒に働く仲間を募集しています!
上記求人をご覧いただき、少しでも興味を持っていただけた方は、まずはチャットでざっくばらんに話をしましょう。
技術的な話だけでなく、私たちが大切にしていることや、お任せしたいお仕事についてなどを詳しくお伝えいたします!
Qiita Jobsよりメッセージお待ちしております!