1659444840
В этой статье представлен dotnet build-image — инструмент, автоматически контейнеризирующий приложения .NET . Вы можете использовать build-image для создания файлов Dockerfile и контейнерных образов. Вы также узнаете, как использовать этот инструмент в рабочем процессе GitHub для создания образа из приложения .NET и отправки его в репозиторий.
Чтобы запустить приложение .NET в контейнере , вам нужен Dockerfile. Поначалу изучение Dockerfiles и их написание может быть забавным. Но через какое-то время это повторяется. Кроме того, файлы должны быть синхронизированы с приложением. И если у вас есть несколько приложений, вам нужно постоянно обновлять их файлы Docker, чтобы использовать один и тот же стиль.
Образ сборки dotnet — это глобальный инструмент, который записывает Dockerfile для вас. Особенности инструмента включают в себя:
TargetFramework
).Для начала установите инструмент из NuGet:
$ dotnet tool install -g dotnet-build-image
Затем создайте образ из приложения веб-шаблона по умолчанию:
$ dotnet new web -o web
$ cd web
$ dotnet build-image -t mywebapp
Вы увидите сборку в терминале. После завершения сборки запустите образ:
$ podman run -p 8080:8080 mywebapp
Откройте веб-приложение в браузере по адресу: http://localhost:8080
.
У инструмента есть несколько вариантов, которые вы можете изучить, передав аргумент: --help
.
$ dotnet build-image --help
Description:
Build a container image from a .NET project.
Usage:
build-image [<PROJECT>] [options]
Arguments:
<PROJECT> .NET project to build [default: .]
Options:
-b, --base <base> Flavor of the base image
-t, --tag <tag> Name for the built image [default: dotnet-app]
--push After the build, push the image to the repository
--as-dockerfile <as-dockerfile> Generates a Dockerfile with the specified name
--version Show version information
-?, -h, --help Show help and usage information
Мы уже использовали -t
опцию тега ( ).
Опция --base
позволяет указать базовое изображение. Вы можете указать любой базовый образ, который Microsoft публикует в реестре Microsoft Artifact Registry . Когда вы укажете ubi
в качестве базы, ваше приложение будет использовать образы .NET из Red Hat Ecosystem Catalog . Образы UBI Red Hat — это образы корпоративного уровня, которые можно свободно распространять и развертывать в любом месте. Чтобы узнать больше, загляните в FAQ по UBI или прочитайте электронную книгу Red Hat Universal Base Images (UBI) .
В качестве альтернативы указанию параметров в командной строке добавьте их в csproj
файл:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImageTag>mywebapp</ImageTag>
<ImageBase>ubi</ImageBase>
</PropertyGroup>
Если вы предпочитаете иметь Dockerfile
контроль версий, этот инструмент все равно может быть полезен. Укажите --as-dockerfile Dockerfile
аргумент, чтобы записать Dockerfile
вместо создания изображения. Вы можете проверить файл и настроить его.
В этом разделе создается репозиторий GitHub и используется dotnet build-image в рабочем процессе GitHub для настройки непрерывной доставки ( CI/CD ) приложения .NET в качестве образа контейнера.
В качестве реестра образов я использую свою бесплатную учетную запись на Quay.io. Другие реестры, такие как Docker Hub , тоже работают.
Сначала создайте новый репозиторий и заполните его веб-приложением .NET. Я назвал свою build-image-demo
:
$ git clone git@github.com:tmds/build-image-demo.git
$ dotnet new web -o web --no-restore
$ git add web
$ git commit -m "Add web project"
$ git push
Добавьте global.json
файл, содержащий версию SDK, которую вы хотите использовать для участников и CI:
$ dotnet new globaljson --sdk-version 6.0.100 --roll-forward latestFeature
$ git add global.json
$ git commit -m "Use 6.0 SDK"
$ git push
Обратите внимание, что мы использовали latestFeature
аргумент. Это позволяет использовать любой 6.0.xxx
SDK. Без этого аргумента пакет SDK ограничен диапазоном 6.0.1xx
функций.
Чтобы использовать образы Red Hat .NET, добавьте ImageBase
свойство в web.csproj
файл. Добавьте строку, отмеченную знаком плюс ( +
), в PropertyGroup
раздел:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
+ <ImageBase>ubi</ImageBase>
</PropertyGroup>
Включите это изменение в свой следующий коммит:
$ git add web/web.csproj
Теперь добавьте учетные данные для доступа к серверу реестра в свой проект GitHub. Щелкните ссылку Settings проекта в веб-интерфейсе GitHub и откройте вкладку Environments . Затем нажмите New Environment и назовите его ImageRegistry
. Добавьте два секрета с именами REGISTRY_USER
и REGISTRY_PASSWORD.
Они содержат учетные данные, используемые для доступа к реестру (рис. 1). После добавления этих значений убедитесь, что они работают, используя их с командой podman login
или docker login
.
Рисунок 1. Добавьте два секрета, REGISTRY_USER и REGISTRY_PASSWORD, в проект GitHub.
Теперь вы готовы добавить рабочий процесс. Создайте файл по адресу: .github/workflows/deploy-image.yml
и добавьте следующее содержимое.
name: Deploy Image
on:
push:
branches: [ "main" ]
env:
DOTNET_PROJECT: web
REGISTRY: quay.io
IMAGE_NAME: tmds/web
jobs:
deploy:
environment: ImageRegistry
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install .NET
uses: actions/setup-dotnet@v2
- name: Install dotnet-build-image
run: dotnet tool install -g dotnet-build-image
- name: Log in to Image registry
run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login $REGISTRY -u "${{ secrets.REGISTRY_USER }}" --password-stdin
- name: Build and push image
run: dotnet build-image --push "$DOTNET_PROJECT" -t "$REGISTRY/$IMAGE_NAME"
Update the REGISTRY
and IMAGE_NAME
properties under the env
field to the right values for your image registry. If you're using Docker Hub, use docker.io
as the REGISTRY
.
Let's take a look at the steps in the workflow:
checkout
) checks the source code.setup-dotnet
) installs the .NET SDK using the version from global.json
.dotnet build-image
tool to build the image and push it to the registry.When you've finished updating the file, push it to the repository:
$ git add .github/workflows/deploy-image.yml
$ git commit -m "Add deploy-image workflow."
$ git push
GitHub will trigger the workflow. You can follow progress under the Actions
tab in the GitHub web interface.
Когда вы вносите изменения в веб-приложение и фиксируете их в основной ветке, оно запускает рабочий процесс, который создает новый образ и отправляет его в репозиторий.
$ podman run –rm -p 8080:8080 quay.io/tmds/web
Если вы откроете веб-сайт по адресу http://localhost:8080
, приложение .NET ответит.
Теперь, когда вы вносите изменения в веб-приложение и фиксируете его в основной ветке, оно снова запускает рабочий процесс и отправляет новый образ в репозиторий.
В этой статье вы узнали, как использовать dotnet build-image для создания образа контейнера из приложения .NET без написания Dockerfile, а также как интегрировать build-image в рабочий процесс GitHub CI/CD. Чтобы поделиться отзывом об этом инструменте, создайте тикет в репозитории GitHub .
#dotnet #csharp #aps.net #docker
1602560783
In this article, we’ll discuss how to use jQuery Ajax for ASP.NET Core MVC CRUD Operations using Bootstrap Modal. With jQuery Ajax, we can make HTTP request to controller action methods without reloading the entire page, like a single page application.
To demonstrate CRUD operations – insert, update, delete and retrieve, the project will be dealing with details of a normal bank transaction. GitHub repository for this demo project : https://bit.ly/33KTJAu.
Sub-topics discussed :
In Visual Studio 2019, Go to File > New > Project (Ctrl + Shift + N).
From new project window, Select Asp.Net Core Web Application_._
Once you provide the project name and location. Select Web Application(Model-View-Controller) and uncheck HTTPS Configuration. Above steps will create a brand new ASP.NET Core MVC project.
Let’s create a database for this application using Entity Framework Core. For that we’ve to install corresponding NuGet Packages. Right click on project from solution explorer, select Manage NuGet Packages_,_ From browse tab, install following 3 packages.
Now let’s define DB model class file – /Models/TransactionModel.cs.
public class TransactionModel
{
[Key]
public int TransactionId { get; set; }
[Column(TypeName ="nvarchar(12)")]
[DisplayName("Account Number")]
[Required(ErrorMessage ="This Field is required.")]
[MaxLength(12,ErrorMessage ="Maximum 12 characters only")]
public string AccountNumber { get; set; }
[Column(TypeName ="nvarchar(100)")]
[DisplayName("Beneficiary Name")]
[Required(ErrorMessage = "This Field is required.")]
public string BeneficiaryName { get; set; }
[Column(TypeName ="nvarchar(100)")]
[DisplayName("Bank Name")]
[Required(ErrorMessage = "This Field is required.")]
public string BankName { get; set; }
[Column(TypeName ="nvarchar(11)")]
[DisplayName("SWIFT Code")]
[Required(ErrorMessage = "This Field is required.")]
[MaxLength(11)]
public string SWIFTCode { get; set; }
[DisplayName("Amount")]
[Required(ErrorMessage = "This Field is required.")]
public int Amount { get; set; }
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime Date { get; set; }
}
C#Copy
Here we’ve defined model properties for the transaction with proper validation. Now let’s define DbContextclass for EF Core.
#asp.net core article #asp.net core #add loading spinner in asp.net core #asp.net core crud without reloading #asp.net core jquery ajax form #asp.net core modal dialog #asp.net core mvc crud using jquery ajax #asp.net core mvc with jquery and ajax #asp.net core popup window #bootstrap modal popup in asp.net core mvc. bootstrap modal popup in asp.net core #delete and viewall in asp.net core #jquery ajax - insert #jquery ajax form post #modal popup dialog in asp.net core #no direct access action method #update #validation in modal popup
1618666860
This year’s .NET Conf was the largest one yet, with over 80 live sessions across three days that were co-organized and presented by the .NET community and Microsoft. On top of all of that, it also marked the release of .NET 5.0 that brings a full set of new capabilities, performance gains, and new languages features for developers to create amazing apps. If you missed this year’s .NET Conf live stream, don’t worry because we have you covered!
#.net #.net core #asp.net #c# #.net conf #.net foundation #community #demos
1617882168
A universally accepted and the most popular framework that can be used for a small or big websites or Web application development projects is the ASP.NET. This framework is majorly used to produce an interactive and data driven web applications.
Are you looking to use an ASP.NET framework for your development needs?
WebClues Infotech offers a dedicated ASP.NET developers where a business can hire a dedicated ASP.NET developer that matches their project requirement. WebClues Infotech also has a flexible pricing structure that suits most project or business requirements.
Want to hire a dedicated ASP.NET developers?
Share your requirements here https://www.webcluesinfotech.com/contact-us/
Book Free Interview with ASP.NET developer: https://bit.ly/3dDShFg
#hire dedicated asp.net developers #hire asp.net developers #hire .net developers #full-stack .net developers india #dedicated .net programmers india #hire asp.net developers or programmers
1596104770
Looking to outsource your asp dot net development requirement?
ASP.Net is a special feature of the DOT Net framework created by Microsoft. At HourlyDeveloper.io, we have a team of experienced ASP.Net developers who are experts in delivering custom solutions based on your business requirements. Hire ASP.Net Developers who will provide tailored solutions to facilitate your business growth.
Consult with experts: https://bit.ly/3fNpVqr
#hire asp.net developers #asp.net development company #asp.net development services #asp.net development #asp.net developer #asp.net
1591455526
ML.NET is a cross-platform, machine learning framework for .NET developers. Model Builder is the UI tooling in Visual Studio that uses Automated Machine Learning (AutoML) to train and consume custom ML.NET models in your .NET apps. You can use ML.NET and Model Builder to create custom machine learning models without having prior machine learning experience and without leaving the .NET ecosystem.
#.net #.net blog #visual studio #ml.net model builder #asp.net (.net) #progaming