CodeZine(コードジン)

特集ページ一覧

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

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2018/05/18 14:00

目次

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に対応した環境でイメージのダウンロード・コンテナ起動によってアプリケーションを実行することができるようになります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

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

著者プロフィール

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

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5