GNU/Linux >> Znalost Linux >  >> Panels >> Docker

ZEIT nyní implementuje open source webové aplikace ASP.NET Core s Dockerem

ZEIT je nová cloudová služba a „nyní“ je název jejich nástroje pro nasazení. ZEIT World je jejich služba DNS. Pokud zamíříte na https://zeit.co/, uvidíte poněkud záhadný animovaný gif, který ukazuje, jak téměř nemožně jednoduché je nyní nasadit webovou aplikaci se ZEIT.

Můžete vytvořit složku, vložit do ní index.html (například) a spustit "teď ." Automaticky získáte web s automaticky vygenerovaným názvem a bude aktivní. Je to pravděpodobně nejrychlejší a nejjednodušší nasazení, jaké jsem kdy viděl. Pamatujete si, když Heroku (tehdy Azure, pak doslova všichni) začali používat git pro nasazení? Dalším krokem byla jasná schopnost napsat „teď“ a získat webovou stránku na veřejném internetu. (Další někdo vymyslí „vytvořit“, což bude nahrazeno pouhým stisknutím ENTER na prázdném řádku!;) )

Vtipy stranou, teď je čistý a snadný. Oceňuji jejich organizační vůli vytvořit elegantní a jednoduchý nástroj příkazového řádku. Mám podezření, že je těžší, než se zdá, udržet věci jednoduché.

Všechny jejich příklady používají JavaScript a node.js, ale také podporují Docker, což znamená, že podporují open source ASP.NET Core na .NET Core! Ale vědí, že ano?;) Pojďme to zjistit.

A co je důležitější, jak snadné to je? Mohu převést web od konceptu po výrobu během několika minut? Zatraceně, že můžu.

Nejprve vytvořte rychlou aplikaci ASP.NET Core. Použiji šablonu MVC s Bootstrap.

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

Udělám rychlou obnovu dotnet, abych získal balíčky pro svůj projekt.

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\

Nyní musím přidat Dockerfile. V kořeni vytvořím jeden, který vypadá takto:

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

Všimněte si, že mohl bych pokud bych použil aspnetcore Dockerfile, který obsahuje .NET Core SDK, nechal mi ZEIT sestavit moji aplikaci, ale to by nejen prodloužilo mé nasazení, ale také by to MNOHO zvětšilo obrázky dockerů. Chci do svého obrazu zahrnout POUZE běhové prostředí .NET Core, takže budu vytvářet a publikovat lokálně.

ZEIT nyní bude potřebovat vidět můj soubor Dockerfile, a protože chci, aby moje aplikace zahrnovala binární soubory (nechci svůj zdroj odesílat v obrazu Dockeru do ZEIT), musím svůj soubor Dockerfile označit jako „Obsah“ a ujistěte se, že se při sestavování a publikování mé aplikace zkopíruje do složky pro publikování.

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

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

Přidám tento soubor csproj mého projektu. Pokud jsem používal Visual Studio, je to stejné klikněte pravým tlačítkem na Vlastnosti souboru Dockerfile, nastavte jej na Obsah a poté na „Vždy zkopírovat do výstupního adresáře“.

Nyní pouze vytvořím a publikuji do složky jedním příkazem:

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

A nakonec ze složky .\bin\Debug\netcoreapp1.1\ spustím "nyní." (Všimněte si, že jsem nyní nainstaloval a zaregistroval se k jejich službě, samozřejmě.)

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!

Nyní jsem vložil vygenerovanou adresu URL do mé schránky (během nasazení budete přesměrováni na krásnou stavovou stránku) a po nasazení mohu navštívit svůj živý web. Ale tato adresa URL není to, co chci. Chci použít vlastní adresu URL.

Mohu vzít jednu ze svých domén a nastavit ji pomocí DNS společnosti ZEIT World, ale líbí se mi DNSimple (ref.).

Svou doménu mohu přidat jako externí po přidání záznamu TXT do mého DNS, abych ověřil, že ji vlastním. Poté nastavím CNAME, abych nasměroval svou subdoménu na alias.zeit.co.

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]

A to je vše. Má dokonce pěkný SSL certifikát, který o mě požádali. Nekončí na SSL celou cestu do webového serveru Kestral kontejneru dockerů, ale pro většinu věcí, které nejsou bankovní, to bude v pořádku.

Celkově vzato, krásný zážitek. Zde je moje aplikace Hello World ASP.NE Core běžící v ZEIT a nasazená nyní na http://zeitdotnet.hanselman.com (pokud tuto stránku navštěvujete dlouho po jejím zveřejnění, tato ukázka MŮŽE být pryč.)

Stále se o tom učím (celkem toto cvičení trvalo asi 30 minut a ptám se Glenna Condrona na otázku dockeru), takže mi není jasné, jak by to fungovalo ve velkém vícekontejnerovém nasazení, ale pokud je váš web neměnný ( nezapisujte na místní disk kontejneru!) ZEIT říká, že bude škálovat vaše jednotlivé kontejnery. Možná se chystá podpora docker-compose?

Sponzor: Věděli jste, že VSTS lze úzce integrovat s Octopus Deploy? Připojte se k Damianu Bradymu a Brianovi A. Randellovi, kteří vám ukážou, jak automatizovat nasazení z VSTS na Octopus Deploy, a předveďte si nový widget řídicího panelu VSTS Octopus Deploy. Zaregistrujte se nyní!


Docker
  1. 26 open source kreativních aplikací k vyzkoušení v roce 2022

  2. Jak nasadit aplikace s Rancherem

  3. 3 strategie pro automatizované produkční nasazení s Dockerem

  1. Optimalizace velikostí obrazu ASP.NET Core Docker

  2. Multiplatformní GUI s open source .NET pomocí Eto.Forms

  3. Jak napsat linuxového démona s .Net Core

  1. Open source 3D pixel art s Goxelem

  2. Open source zpracování fotografií pomocí Darktable

  3. Open source myšlenkové mapování s Draw.io