GNU/Linux >> Belajar Linux >  >> Panels >> Docker

ZEIT sekarang menerapkan aplikasi web open source ASP.NET Core dengan Docker

ZEIT adalah layanan cloud baru dan "sekarang" adalah nama alat penyebaran mereka. ZEIT World adalah layanan DNS mereka. Jika Anda membuka https://zeit.co/, Anda akan melihat animasi gif yang agak samar yang menunjukkan betapa hampir mustahilnya menerapkan aplikasi web dengan ZEIT sekarang.

Anda dapat membuat folder, meletakkan index.html (misalnya) di dalamnya dan jalankan "sekarang ." Anda akan secara otomatis mendapatkan situs web dengan nama yang dibuat secara otomatis dan itu akan ditayangkan. Ini mungkin penyebaran tercepat dan termudah yang pernah saya lihat. Ingat ketika Heroku (kemudian Azure, lalu secara harfiah semua orang) mulai menggunakan git untuk penyebaran? Jelas bisa mengetik "sekarang" dan hanya mendapatkan situs web di internet publik adalah langkah berikutnya.(Selanjutnya seseorang akan membuat "up" yang kemudian akan diganti dengan hanya menekan ENTER pada baris kosong!;))

Kesampingkan lelucon, sekarang bersih dan mudah. Saya menghargai kemauan organisasi mereka untuk membuat alat baris perintah yang elegan dan sederhana. Saya kira lebih sulit daripada kelihatannya untuk membuat semuanya tetap sederhana.

Semua contoh mereka menggunakan JavaScript dan node.js, tetapi mereka juga mendukung Docker, yang berarti mereka mendukung open source ASP.NET Core di .NET Core! Tapi apakah mereka tahu mereka melakukannya?;) Mari kita cari tahu.

Dan yang lebih penting, seberapa mudah? Bisakah saya mengambil situs dari konsep hingga produksi dalam hitungan menit? Aku juga bisa.

Pertama, buat aplikasi ASP.NET Core cepat. Saya akan menggunakan template MVC dengan Bootstrap.

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

Saya akan melakukan pemulihan dotnet cepat untuk mendapatkan paket untuk proyek saya.

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\

Sekarang saya perlu menambahkan Dockerfile. Saya akan membuat satu di root yang terlihat seperti ini:

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

Perhatikan bahwa saya bisa minta ZEIT membangun aplikasi saya untuk saya jika saya menggunakan aspnetcore Dockerfile yang menyertakan .NET Core SDK, tetapi itu tidak hanya akan membuat penerapan saya lebih lama, itu juga akan membuat gambar buruh pelabuhan saya BANYAK lebih besar. Saya ingin menyertakan HANYA runtime .NET Core dalam gambar saya, jadi saya akan membuat dan memublikasikannya secara lokal.

ZEIT sekarang perlu melihat Dockerfile saya, dan karena saya ingin aplikasi saya menyertakan binari (saya tidak ingin mengirimkan sumber saya dalam gambar Docker hingga ZEIT), saya perlu menandai Dockerfile saya sebagai "Konten" dan pastikan itu disalin ke folder publikasikan saat aplikasi saya dibuat dan diterbitkan.

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

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

Saya akan menambahkan ini file csproj proyek saya. Jika saya menggunakan Visual Studio, ini sama sebagai klik kanan pada Properties dari Dockerfile, atur ke Content dan kemudian "Always Copy to Output Directory."

Sekarang saya hanya akan membuat dan memublikasikan ke folder dengan satu perintah:

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

Dan akhirnya, dari folder .\bin\Debug\netcoreapp1.1\ saya menjalankan "sekarang." (Perhatikan bahwa saya telah menginstal sekarang dan mendaftar untuk layanan mereka, tentu saja.)

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!

Sekarang telah menempatkan URL yang dihasilkan di clipboard saya (selama penyebaran Anda akan diarahkan ke halaman status yang indah) dan ketika itu digunakan saya dapat mengunjungi situs langsung saya. Tapi, URL itu bukan yang saya inginkan. Saya ingin menggunakan URL khusus.

Saya dapat mengambil salah satu domain saya dan mengaturnya dengan DNS ZEIT World tapi saya suka DNSimple (ref).

Saya dapat menambahkan domain saya sebagai domain eksternal setelah menambahkan data TXT ke DNS saya untuk memverifikasi bahwa saya pemiliknya. Kemudian saya menyiapkan CNAME untuk mengarahkan subdomain saya ke 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]

Dan itu saja. Bahkan memiliki sertifikat SSL yang bagus yang mereka ajukan untuk saya. Itu tidak mengakhiri SSL sampai ke server web Kestral wadah buruh pelabuhan, tetapi untuk sebagian besar hal yang tidak perbankan, itu akan baik-baik saja.

Semua dalam semua, pengalaman yang indah. Inilah aplikasi Hello World ASP.NE Core saya yang berjalan di ZEIT dan digunakan sekarang di http://zeitdotnet.hanselman.com (jika Anda mengunjungi ini lama setelah ini diterbitkan, sampel ini MUNGKIN hilang.)

Saya masih belajar tentang ini (seluruh latihan ini sekitar 30 menit total dan menanyakan Glenn Condron pertanyaan buruh pelabuhan) jadi saya tidak jelas bagaimana ini akan bekerja dalam penyebaran multi-kontainer besar, tetapi selama situs Anda tidak berubah ( jangan menulis ke disk lokal wadah!) ZEIT mengatakan akan menskalakan wadah tunggal Anda. Mungkin dukungan docker-compose akan datang?

Sponsor: Tahukah Anda bahwa VSTS dapat berintegrasi erat dengan Octopus Deploy? Bergabunglah dengan Damian Brady dan Brian A. Randell saat mereka menunjukkan kepada Anda cara mengotomatiskan penerapan dari VSTS ke Octopus Deploy, dan demo widget dasbor VSTS Octopus Deploy yang baru. Daftar sekarang!


Docker
  1. 26 aplikasi kreatif open source untuk dicoba pada tahun 2022

  2. 3 Strategi untuk Penerapan Produksi Otomatis Dengan Docker

  3. GUI lintas platform dengan open source .NET menggunakan Eto.Forms

  1. Cara Menyebarkan Aplikasi dengan Rancher

  2. Mengoptimalkan ukuran Gambar ASP.NET Core Docker

  3. Cara menulis daemon linux dengan .Net Core

  1. Seni piksel 3D sumber terbuka dengan Goxel

  2. Pemrosesan foto sumber terbuka dengan Darktable

  3. Pemetaan pikiran sumber terbuka dengan Draw.io