GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

ZEIT は、Docker を使用したオープン ソース ASP.NET Core Web アプリのデプロイを開始しました。

ZEIT は新しいクラウド サービスであり、「今」はその展開ツールの名前です。 ZEIT World は同社の DNS サービスです。 https://zeit.co/ にアクセスすると、やや不可解なアニメーション GIF が表示されます。これは、ZEIT を使用して Web アプリを今すぐデプロイすることが、ほぼ不可能に近いほど簡単であることを示しています。

フォルダーを作成し、その中に index.html (たとえば) を入れて、「now」を実行するだけです。 ." 自動生成された名前の Web サイトが自動的に取得され、それが公開されます。これはおそらく、私が今まで見た中で最も速く、最も簡単なデプロイです。Heroku (当時は Azure、そして文字通りすべての人) がデプロイに git を使い始めたときのことを覚えていますか?明らかに、「今すぐ」と入力して、公共のインターネット上で Web サイトを取得できるようになることが次のステップでした. (次に誰かが「アップ」を作成し、空行で ENTER を押すだけで置き換えられます!;)

冗談はさておき、 きれいで簡単です。エレガントでシンプルなコマンド ライン ツールを作成する組織の意志に感謝します。物事をシンプルに保つのは見た目より難しいと思います.

彼らの例はすべて JavaScript と node.js を使用していますが、Docker もサポートしています。つまり、.NET Core でオープン ソースの ASP.NET Core をサポートしています!しかし、彼らは知っていますか?;) 調べてみましょう。

さらに重要なことに、それはどれほど簡単ですか?コンセプトから本番まで数分でサイトを作成できますか?なんてこった、できるよ。

まず、簡単な ASP.NET Core アプリを作成します。 Bootstrap で MVC テンプレートを使用します。

C:\Users\scott\zeitdotnet>dotnet new mvc
Content generation time: 419.5337 ms
The template "ASP.NET Core Web App" created successfully.

プロジェクトのパッケージを取得するために、ドットネットの簡単な復元を行います。

C:\Users\scott\zeitdotnet>dotnet restore
Restoring packages for C:\Users\scott\zeitdotnet\zeitdotnet.csproj...
Generating MSBuild file C:\Users\scott\zeitdotnet\obj\zeitdotnet.csproj.nuget.g.props.
Generating MSBuild file C:\Users\scott\zeitdotnet\obj\zeitdotnet.csproj.nuget.g.targets.
Writing lock file to disk. Path: C:\Users\scott\zeitdotnet\obj\project.assets.json
Restore completed in 2.93 sec for C:\Users\scott\zeitdotnet\zeitdotnet.csproj.

NuGet Config files used:
C:\Users\scott\AppData\Roaming\NuGet\NuGet.Config
C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config

Feeds used:
https://api.nuget.org/v3/index.json
C:\LocalNuGet
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\

次に、Dockerfile を追加する必要があります。ルートに次のようなものを作成します:

FROM microsoft/aspnetcore
LABEL name="zeitdotnet"
ENTRYPOINT ["dotnet", "zeitdotnet.dll"]
ARG source=.
WORKDIR /app
EXPOSE 80
COPY $source .

できます .NET Core SDK を含む aspnetcore Dockerfile を使用した場合は、ZEIT にアプリをビルドしてもらいますが、それでは展開が長くなるだけでなく、Docker イメージが非常に大きくなります。イメージに .NET Core ランタイムだけを含めたいので、ローカルでビルドして公開します。

ZEIT は今、私の Dockerfile を確認する必要があります。また、アプリにバイナリを含める必要があるため (ZEIT までの Docker イメージでソースを出荷したくありません)、Dockerfile を「コンテンツ」としてマークし、アプリをビルドして公開するときに、publish フォルダーにコピーされていることを確認してください。

<ItemGroup>
  <None Remove="Dockerfile" />
</ItemGroup>

<ItemGroup>
  <Content Include="Dockerfile">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>

これをプロジェクトの csproj ファイルに追加します。 Visual Studio を使用していた場合、これは同じです Dockerfile の [プロパティ] を右クリックして [コンテンツ] に設定し、[常に出力ディレクトリにコピー] に設定します。

次に、1 つのコマンドでビルドしてフォルダーに公開します。

C:\Users\scott\zeitdotnet>dotnet publish
Microsoft (R) Build Engine version 15.1.548.43366
Copyright (C) Microsoft Corporation. All rights reserved.

zeitdotnet -> C:\Users\scott\zeitdotnet\bin\Debug\netcoreapp1.1\zeitdotnet.dll

最後に、.\bin\Debug\netcoreapp1.1\ フォルダーから「今すぐ」実行します。 (もちろん、今すぐインストールしてサービスにサインアップしたことに注意してください。)

C:\Users\scott\zeitdotnet\bin\Debug\netcoreapp1.1\publish>now
> Deploying ~\zeitdotnet\bin\Debug\netcoreapp1.1\publish
> Ready! https://zeitdotnet-gmhcxevqkf.now.sh (copied to clipboard) [3s]
> Upload [====================] 100% 0.0s
> Sync complete (196.18kB) [2s]
> Initializing…
> Building
> ▲ docker build
> ---> 035a0a1401c3
> Removing intermediate container 289b9e4ce5d9
> Step 6 : EXPOSE 80
> ---> Running in efb817308333
> ---> fbac2aaa3039
> Removing intermediate container efb817308333
> Step 7 : COPY $source .
> ---> ff009cfc48ea
> Removing intermediate container 8d650c1867cd
> Successfully built ff009cfc48ea
> ▲ Storing image
> ▲ Deploying image
> Deployment complete!

生成された URL をクリップボードに入れました (デプロイ中に素敵なステータス ページにリダイレクトされます)。デプロイされると、ライブ サイトにアクセスできます。しかし、その URL は私が望むものではありません。カスタム URL を使用したい。

ドメインの 1 つを取得して ZEIT World の DNS を設定することもできますが、DNSimple (ref) が好きです。

DNS に TXT レコードを追加して、自分がドメインを所有していることを確認した後、ドメインを外部ドメインとして追加できます。次に、サブドメインが alias.zeit.co を指すように CNAME をセットアップします。

C:\Users\scott\Desktop\zeitdotnet>now alias https://zeitdotnet-gmhcxevqkf.now.sh http://zeitdotnet.hanselman.com
> zeitdotnet.hanselman.com is a custom domain.
> Verifying the DNS settings for zeitdotnet.hanselman.com (see https://zeit.world for help)
> Verification OK!
> Provisioning certificate for zeitdotnet.hanselman.com
> Success! Alias created:
https://zeitdotnet.hanselman.com now points to https://zeitdotnet-gmhcxevqkf.now.sh [copied to clipboard]

以上です。彼らが私に申請した素敵なSSL証明書さえあります. Docker コンテナーの Kestral Web サーバーまで SSL で終了するわけではありませんが、銀行業務以外のほとんどの場合は問題ありません。

全体として、素敵な体験です。これは、ZEIT で実行され、現在 http://zeitdotnet.hanselman.com にデプロイされている私の Hello World ASP.NE Core アプリです (これが公開されてからずっと後にこれにアクセスしている場合、このサンプルはなくなっている可能性があります)。

私はまだこれについて学んでいます (この演習全体は合計で約 30 分で、Glenn Condron に docker の質問をしました) ので、これが大規模な複数コンテナーの展開でどのように機能するかはわかりませんが、サイトが不変である限り (コンテナーのローカル ディスクに書き込まないでください!) ZEIT は、単一のコンテナーをスケーリングすると言っています。おそらく docker-compose のサポートが来るでしょうか?

スポンサー: VSTS が Octopus Deploy と密接に統合できることをご存知ですか? Damian Brady と Brian A. Randell が VSTS から Octopus Deploy へのデプロイを自動化する方法を紹介し、新しい VSTS Octopus Deploy ダッシュボード ウィジェットのデモを行います。今すぐ登録してください!


Docker
  1. 2022年に試す26のオープンソースクリエイティブアプリ

  2. ランチャーでアプリをデプロイする方法

  3. ASP.NET Core Docker イメージ サイズの最適化

  1. Dockerを使用した自動本番デプロイメントの3つの戦略

  2. Eto.Forms を使用したオープン ソース .NET によるクロスプラットフォーム GUI

  3. .Net Core で Linux デーモンを作成する方法

  1. Goxelを使用したオープンソースの3Dピクセルアート

  2. Darktableを使用したオープンソースの写真処理

  3. Draw.ioを使用したオープンソースのマインドマッピング