TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.74K subscribers
Post #3274 1.64K
День 2733. #ВопросыНаСобеседовании
Марк Прайс предложил свой набор из 60 вопросов (как технических, так и на софт-скилы), которые могут задать на собеседовании.

41. Контейнеры Docker и .NET
«Расскажите, как Docker можно использовать для улучшения разработки, тестирования и развёртывания приложений .NET. Как вы бы настроили и развернули приложение .NET с использованием Docker».

Хороший ответ
Использование Docker значительно улучшает разработку, тестирование и развёртывание, обеспечивая согласованную среду от разработки до производства. Это устраняет проблему «работает на моей машине», когда ошибки не возникают в среде разработки, но появляются в производственной среде из-за разных настроек среды или разного установленного программного обеспечения. Контейнеризация также способствует более надёжному развёртыванию. Вот как Docker можно интегрировать с приложением .NET.

1. Начнём с создания файла Dockerfile в корне проекта .NET. Этот файл описывает процесс сборки образа Docker и указывает среду, в которой работает приложение:
# Используем официальный образ SDK .NET 10 от Microsoft
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build-env
WORKDIR /app

# Копируем csproj и восстанавливаем зависимости
COPY *.csproj ./
RUN dotnet restore

# Копируем файлы проекта и публикуем
COPY . ./
RUN dotnet publish -c Release -o out

# Создаём образ среды выполнения
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "MyApp.dll"]


2. Создадим Docker-образ, используя Dockerfile:
docker build -t myapp:latest .


3. Запустим приложение в контейнере Docker:
docker run -d -p 8080:80 --name myrunningapp myapp:latest


4. Используем Docker Compose для управления многоконтейнерными приложениями в Docker. Здесь мы определяем сервисы, параметры сети и дисковые тома в файле docker-compose.yml:
version: '3.4'

services:
webapp:
image: myapp:latest
build:
context: .
dockerfile: Dockerfile
ports:
- "5000:80"
environment:
ASPNETCORE_ENVIRONMENT: Development
volumes:
- .:/app
- ~/.aspnet/https:/https:ro

Эта конфигурация позволяет обновлять приложение в режиме реального времени в среде разработки, отражая изменения, внесённые в исходные файлы внутри Docker-контейнера, что может быть очень полезно для тестирования и отладки в реальном времени.

Преимущества
- Согласованность: Docker гарантирует, что приложение работает одинаково во всех средах.
- Изоляция: Каждая часть приложения может содержаться в отдельных контейнерах, позволяя явно управлять зависимостями.
- Масштабируемость: можно легко масштабировать приложение, изменяя количество контейнеров, в которых оно работает, с помощью инструментов оркестрации, таких как Kubernetes.

Использование Docker упрощает процесс разработки приложений .NET, повышает совместимость с производственной средой и улучшает общую масштабируемость и управляемость приложения.

Источник:
https://github.com/markjprice/tools-skills-net8/blob/main/docs/interview-qa/readme.md
  • 👍 6
  • 👎 3
More from @netdeveloperdiary
  1. Sep 26, 2026День 2796. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Продолжение Начало Три…
  2. Sep 25, 2026День 2795. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Начало Проблема с позиц…
  3. Sep 24, 2026День 2794. #Оффтоп #Здоровье Сегодня будет необычный пост. Завтра в Москве стартует конфер…
  4. Sep 23, 2026День 2793. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  5. Sep 22, 2026День 2792. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  6. Sep 21, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 22 сентября(уже завтра!) в 1…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →