Автор оригинала: Brian Thomas.
Я подозреваю, что есть много людей, таких как я, которые разрабатывают приложения в Windows, используя .NET, и теперь оказываются желающими развертывания своих проектов в контейнерах на общественной инфраструктуре.
Чистый ядра — это бесплатная платформа/выполнение с открытым исходным кодом, которую я могу легко портировать большинство моих приложений C #. Будучи перекрестной платформой, я могу принять эти чистые основные приложения в контейнере докера. Я представляю здесь несколько простых инструкций для минимального «Hello World» приложения, который демонстрирует некоторые основные концепции в решениях этого типа.
Я использовал Kestrel В последнее время в качестве технологии компонентных компонентов сервера для веб-приложений. В этом простом примере я использую его, как будто вы будете использовать Node.js, чтобы раскрутить минимальный веб-сервер FUSS.
Я предполагаю, что у вас есть Ubuntu 16.04 Linux Server для этих инструкций. Во-первых, мы устанавливаем Чистый ядра SDK …
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install dotnet-sdk-2.1
Нам также нужно будет установить Докер …
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce
Сделайте новый каталог и создайте новое приложение …
mkdir helloworld cd helloworld dotnet new console dotnet add package Microsoft.AspNetCore --version 2.1.1
Добавить пакет
Команда, использует Nuget Чтобы установить зависимость, нам нужно для нашего веб-сервера Kestrel.
Редактировать Program.cs
Содержать эти определения класса …
namespace helloworld { public class Startup { public void Configure(IApplicationBuilder applicationBuilder, IHostingEnvironment hostingEnvironment) { applicationBuilder.Run(async context => { await context.Response.WriteAsync("Hello World"); }); } } class Program { static void Main(string[] args) { WebHost.CreateDefaultBuilder() .UseStartup() .UseKestrel() .UseUrls("http://0.0.0.0:5050") .Build() .Run(); } } }
Это минимальный код, необходимый для запуска веб-сервера на порту 5050, а для предоставления класса Startup
, это вернет строку «Hello World».
Net Core имеет команду публикации, которая создает папку со всеми файлами, которые вам нужны для распространения приложения для определенной ОС. Чтобы опубликовать заявку на Linux мы бежим …
dotnet publish --runtime=linux-x64
Оказавшись, это успешно завершено нам определение «докера» для создания образа докера …
FROM microsoft/dotnet:2.1-runtime COPY ./bin/Debug/netcoreapp2.1/linux-x64/publish/ ./ ENTRYPOINT ["dotnet", "helloworld.dll"]
Этот простой документ Docker использует Microsoft прилагаемое базовое изображение, копии над опубликованным приложением, которое мы сделали на предыдущем шаге, и устанавливает приложение, которое мы хотим использовать в качестве входа, когда контейнер создается.
Изображение докера построено и работает с помощью этих двух команд соответственно …
docker build . -t helloworld docker run -p 5050:5050 helloworld
Затем вы можете проверить ваше приложение, используя свой любимый веб-браузер (например, с помощью URL of http://127.0.0.1:5050
на твоей машине.)
Оригинал: «https://www.codementor.io/@bxthomas/net-core-docker-hello-world-l97jr9h2a»