SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ

ASP.NET Core 2.0アプリケーションをデプロイしてみよう

進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ 第7回

Docker上でアプリケーションを動かしてみよう

 次はDocker上でASP.NET Core 2.0のアプリケーションを実行してみましょう。ASP.NET Core 2.0のアプリケーションをDocker上で動作させたい場合、Microsoftが公開しているASP.NET Core用のDockerイメージを利用することができます。

ASP.NET Core 2.0のDockerイメージを使ったアプリケーションのビルドと実行

 Microsoftから公開されているASP.NET Core用のDockerイメージには、ビルド用とアプリケーション実行用の2種類が存在します。まずはビルド用のイメージを使ってアプリケーションをコンパイル(dotnet publish)し、生成されたデプロイ用モジュールをアプリケーション実行用のコンテナにコピーしてアプリケーションを起動するという手順になります。

 ビルド用イメージにはアプリケーションをビルドするためのツールが含まれていますが、アプリケーション実行用のイメージにはそれが含まれていません。イメージを用途別に分け、実行用のコンテナを軽量に保つことで素早くアプリケーションが開始できるようなっています。

Dockerfileの作成

 前述の手順は、Dockerがどのようなコンテナを作成するのかを記述したスクリプトファイル「Dockerfile」に記載していきます。先ほど作成した「pub-sample」プロジェクトのルートディレクトリ配下に以下の内容のDockerfileを作成します。

[リスト2] ASP.NET Core 2.0のビルドと実行用Dockerfile
# ビルド用イメージからコンテナを作成
FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app

# ファイルをローカル上からコピーし、デプロイ用モジュールを作成する
COPY . ./
RUN dotnet publish -c release -o out

# アプリ実行用イメージからコンテナを作成
FROM microsoft/aspnetcore:2.0
WORKDIR /app

# デプロイ用モジュールをビルド用コンテナからコピーし、アプリケーションを実行する
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "pub-sample.dll"]

 Dockerfileには「FROM」の行が2行あります。それぞれ「microsoft/aspnetcore-build:2.0」がビルド用のイメージ、「microsoft/aspnetcore:2.0」がアプリケーション実行用のイメージをDockerのリポジトリからダウンロードしています。ビルド用イメージ上では「dotnet publish」コマンドを実行してデプロイ用のモジュールを作成しています。そのモジュールを「COPY」コマンドでアプリケーション実行用のイメージにコピーしています。

 「ENTRYPOINT」は、このDockerfileを基に作成したイメージからコンテナを起動する際に実行されるコマンドで、ここでは「dotnet pub-sample.dll」がコンテナ起動時に実行されるように指定しています。

 それでは実際にDockerfileからイメージの作成、コンテナの実行まで行ってみましょう。

[リスト3] Dockerイメージの作成とコンテナの起動
# Dockerfileを基にイメージを作成
$ docker build -t aspnetcore_image .

・・・中略

# コンテナを起動
$ docker run -it --rm -p 5000:80 --name aspnetcore_container aspnetcore_image

 「docker build」コマンドでDockerfileを基にイメージを作成します。「-t」オプションで指定した「aspnetcore_image」がイメージ名となります。イメージ作成後、「docker run」コマンドを実行するとすぐにコンテナが起動します。「-p」オプションでPCとDockerコンテナのポートバインディングを行っており、「http://loclahost:5000」でコンテナ上で起動しているアプリケーションにアクセスすることができます。

 ここで作成したDockerイメージをDockerHubなどのDockerイメージのレジストリサービスに登録しておくことで、Dockerに対応した環境でイメージのダウンロード・コンテナ起動によってアプリケーションを実行することができるようになります。

次のページ
Azure App Serviceにアプリケーションをデプロイしよう(1)

この記事は参考になりましたか?

進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10824 2018/05/18 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー