.NET 자습서 - 첫 번째 마이크로 서비스
시작
목적
.NET으로 마이크로 서비스를 생성하기 위한 빌딩 블록에 익숙해지세요.
필수 구성 요소
없음.
macOS 12.0 이상 버전.
완료 시간
15분
시나리오
값 목록을 반환하는 간단한 서비스를 만든 다음 Docker 컨테이너에서 서비스를 실행합니다.
.NET SDK 설치
.NET 앱을 빌드하기 시작하려면 .NET SDK를 다운로드하여 설치하세요.
.NET 8 SDK(64비트) 다운로드
32비트 다운로드
|
Arm64 다운로드
이전 버전의 Windows에 추가 종속성을 설치해야 합니다. 자세한 내용은 Windows 7/8.1/Server 2012를 참조하세요.
.NET 8 SDK x64(Intel) 다운로드
.NET 8 SDK Arm64(Apple Silicon) 다운로드
Apple M1 또는 M2 칩이 있는 Mac을 사용하는 경우 Arm64 버전의 SDK를 설치해야 합니다.
올바르게 설치된 모든 것을 확인하세요
설치한 후 새 명령 프롬프트를 열고 다음 명령을 실행합니다.
설치한 후 새 터미널을 열고 다음 명령을 실행합니다.
dotnet --version
설치에 성공한 경우 버전 8.0.100 이상이 출력되어야 합니다.
8.0.100
모든 것이 정상이면 아래의 계속 버튼을 선택하여 다음 단계로 이동합니다.
오류가 있나요?
'dotnet'이 내부 또는 외부 명령 오류로 인식되지 않는 경우 새 명령 프롬프트를 열어야 합니다. 컴퓨터를 빠르게 다시 시작해도 문제를 해결할 수 없는 경우 문제가 발생했습니다 버튼을 사용하여 문제 해결에 도움을 받으세요.
서비스 만들기
명령 프롬프트에서 다음 명령을 실행하여 앱을 만듭니다.
터미널에서 다음 명령을 실행하여 앱을 만듭니다.
dotnet new webapi -o MyMicroservice --no-https
그런 다음 이전 명령으로 만든 새 디렉터리로 이동합니다.
cd MyMicroservice
이러한 명령은 무엇을 의미하나요?
dotnet
명령은 webapi
유형의 새 애플리케이션(REST API 엔드포인트)을 만듭니다.
-o
매개 변수는 앱이 저장되는MyMicroservice
라는 디렉터리를 생성합니다.--no-https
플래그는 배포를 간단하게 유지하기 위해 HTTPS 인증서 없이 실행되는 앱을 만듭니다.
cd MyMicroservice
명령은 새로 만든 앱 디렉터리에 사용자를 배치합니다.
생성된 코드
실행할 준비가 된 간단한 서비스를 제공하기 위해 다음 파일을 비롯해 MyMicroservice
디렉터리에 여러 파일이 생성되었습니다.
Program.cs
는 진입점 파일이며 앱을 시작할 때 로드하는 모든 설정과 구성을 포함하고 향후 5일 동안의 일기 예보를 반환하는 간단한 API에 대한 코드를 포함합니다. 응용 프로그램도 시작합니다.MyMycroservice.http
는 ASP.NET Core 프로젝트를 테스트하는 데 사용됩니다.MyMicroservice.csproj
는 앱이 대상으로 하는 .NET 버전, 프로젝트에서 참조하는 라이브러리 등을 정의합니다.Properties
디렉터리 내의launchSettings.json
파일은 로컬 개발 환경에 대한 다양한 프로필 설정을 정의합니다. 5000-5300 사이의 포트 번호는 프로젝트 생성 시 자동으로 할당되어 이 파일에 저장됩니다.
다음 코드는 Program.cs
파일의 내용을 표시합니다.
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
다음 단계로 이동하려면 아래의 계속 버튼을 선택하세요.
오류가 있나요?
템플릿 "ASP.NET Core Web API"를 만들 수 없습니다. 템플릿을 만들지 못했습니다. 세부 정보: 'C:\Windows\System32\MyMicroservice' 경로에 대한 액세스가 거부되었습니다와 비슷한 메시지를 받으면 현재 디렉터리를 새 폴더를 만들 수 있는 권한이 있는 디렉터리로 변경하고 명령을 다시 실행해 보세요.
프로젝트를 만들려고 할 때 Windows에서 SDK를 찾을 수 없고 SDK를 설치했다고 확신하는 경우 컴퓨터에 PATH 환경 변수에 문제가 있을 수 있습니다. 이 문제를 진단하고 수정하는 방법에 대한 지침은 이 Stack Overflow 게시물을 참조하세요.
발생한 문제를 해결할 수 없는 경우 문제 해결에 대한 도움말을 보려면 아래에 있는 문제가 발생했습니다 버튼을 선택하세요.
서비스 실행
명령 프롬프트에서 다음 명령을 실행합니다.
터미널에서 다음 명령을 실행합니다.
dotnet run
다음과 유사한 출력이 표시되어야 합니다.
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5020
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Ana\MyMicroservice
앱에 http://localhost:<port number>에서 수신 대기 중이라고 표시될 때까지 기다린 다음 브라우저를 열고 http://localhost:<port number>/weatherforecast로 이동합니다.
이 예에서는 포트 5020에서 수신 대기 중임을 나타내므로 다음 이미지는 localhost:5020/weatherforecast
URL을 표시합니다.
축하합니다. 간단한 서비스가 실행되었습니다!
명령 프롬프트에서 CTRL+C를 눌러 서비스를 로컬로 실행하는 dotnet run
명령을 종료합니다.
터미널에서 CTRL+C를 눌러 서비스를 로컬로 실행하는 dotnet run
명령을 종료합니다.
오류가 있나요?
http://localhost:5020 웹 주소에 대한 웹 페이지를 찾을 수 없음과 유사한 메시지를 받는 경우 애플리케이션의 날씨 예보 페이지를 보고 있는지 확인합니다. URL은 http://localhost:5020이 아니라 http://localhost:5020/weatherforecast여야 합니다.
Docker 설치
Docker는 앱과 해당 구성 및 종속성을 컨테이너라는 독립적으로 배포 가능한 단일 단위로 결합할 수 있는 플랫폼입니다.
Docker가 이미 설치되어 있는 경우 버전 23.0.0 이상인지 확인하세요.
다운로드 및 설치
설치 관리자를 다운로드하기 전에 Docker Store에 등록하라는 메시지가 표시됩니다.
기본적으로 Docker는 Windows에서 Linux 컨테이너를 사용합니다. 설치 프로그램에 메시지가 표시되면 이 구성 설정을 그대로 두세요.
Docker를 설치한 후 설치를 완료하기 위해 로그아웃하라는 메시지가 표시될 수 있습니다.
Docker를 사용할 준비가 되었는지 확인
설치한 후 새 명령 프롬프트를 열고 다음 명령을 실행합니다.
설치한 후 새 터미널을 열고 다음 명령을 실행합니다.
docker --version
명령이 실행되어 일부 버전 정보가 표시되면 Docker가 성공적으로 설치된 것입니다.
Docker 메타데이터 추가
Docker 이미지로 실행하려면 Dockerfile
—가 필요합니다. 이는 Docker 이미지로 앱을 빌드하는 방법에 대한 지침이 포함된 텍스트 파일입니다. Docker 이미지는 앱을 Docker 컨테이너로 실행하는 데 필요한 모든 것을 포함합니다.
앱 디렉터리로 돌아가기
이전 단계에서 새 명령 프롬프트를 열었으므로 서비스를 만든 디렉터리로 돌아가야 합니다.
이전 단계에서 새 터미널을 열었으므로 서비스를 만든 디렉터리로 돌아가야 합니다.
cd MyMicroservice
DockerFile 추가
다음 명령을 사용하여 Dockerfile
이라는 파일을 만듭니다.
touch Dockerfile
fsutil file createnew Dockerfile 0
그런 다음 좋아하는 텍스트 편집기에서 열 수 있습니다.
그런 다음, 즐겨 찾는 텍스트 편집기에서 수동으로 열거나 다음 명령을 사용하여 열 수 있습니다.
open Dockerfile
start Dockerfile
텍스트 편집기에서 Dockerfile
의 내용을 다음으로 바꿉니다.
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY MyMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
참고: 파일 이름을 Dockerfile.txt
또는 다른 이름이 아닌 Dockerfile
로 지정해야 합니다.
선택 사항: .dockerignore 파일 추가
.dockerignore 파일은 'docker 빌드'의 일부로 사용되는 파일 집합을 줄입니다. 파일이 적을수록 빌드 속도가 빨라집니다.
다음 명령을 사용하여 .dockerignore
파일(익숙한 경우 .gitignore
파일과 유사)이라는 파일을 만듭니다.
touch .dockerignore
fsutil file createnew .dockerignore 0
그런 다음 좋아하는 텍스트 편집기에서 열 수 있습니다.
그런 다음, 즐겨 찾는 텍스트 편집기에서 수동으로 열거나 다음 명령을 사용하여 열 수 있습니다.
open .dockerignore
start .dockerignore
텍스트 편집기에서 .dockerignore
내용을 다음으로 바꿉니다.
Dockerfile
[b|B]in
[O|o]bj
Docker 이미지 만들기
다음 명령을 실행하세요.
docker build -t mymicroservice .
docker build
명령은 Dockerfile
을 사용하여 Docker 이미지를 빌드합니다.
-t mymicroservice
매개 변수는 이미지에mymicroservice
로 태그를 지정(또는 이름 지정)하도록 지시합니다.- 마지막 매개 변수는
Dockerfile
을 찾는 데 사용할 디렉터리를 알려줍니다(.
는 현재 디렉터리를 지정함). - 이 명령은 Docker 이미지를 생성하기 위해 모든 종속성을 다운로드하고 빌드하며 시간이 걸릴 수 있습니다.
다음 명령을 실행하여 방금 만든 이미지를 포함하여 컴퓨터에서 사용 가능한 모든 이미지 목록을 볼 수 있습니다.
docker images
Docker 이미지 실행
다음 명령을 사용하여 컨테이너에서 앱을 실행할 수 있습니다.
docker run -it --rm -p 3000:8080 --name mymicroservicecontainer mymicroservice
다음 URL로 이동하여 컨테이너에서 실행 중인 애플리케이션에 액세스할 수 있습니다. http://localhost:3000/weatherforecast
선택적으로 다음 명령을 사용하여 별도의 명령 프롬프트에서 실행 중인 컨테이너를 볼 수 있습니다.
선택적으로 다음 명령을 사용하여 별도의 터미널 창에서 실행 중인 컨테이너를 볼 수 있습니다.
docker ps
명령 프롬프트에서 CTRL+C를 눌러 컨테이너에서 서비스를 실행하는 docker run
명령을 종료합니다.
터미널에서 CTRL+C를 눌러 컨테이너에서 서비스를 실행하는 docker run
명령을 종료합니다.
축하합니다! Docker 컨테이너를 사용하여 배포 및 확장할 수 있는 소규모 독립 서비스를 성공적으로 만들었습니다.
마이크로 서비스의 기본 빌딩 블록입니다.
오류가 있나요?
오류: 연결 중 오류: 이 오류는 docker 디먼이 실행되고 있지 않음을 나타낼 수 있음과 유사한 메시지를 받는 경우 Docker 애플리케이션을 시작해야 할 수 있습니다. Docker 클라이언트가 docker run hello-world
를 실행하여 실행 중인지 확인합니다. 이렇게 하면 이미지를 끌어오고 실행합니다. 도움이 더 필요하다면 Docker 설명서에서 이 문제를 진단하고 해결하는 방법에 대한 지침을 참조하세요.
다음 단계
축하합니다! 간단한 서비스를 만든 다음 Docker 컨테이너에서 실행했습니다.
이제 다음 자습서를 통해 클라우드에 마이크로 서비스를 배포하는 방법을 배울 수 있습니다.
귀하는 다음 항목에도 또한 관심이 있을 수 있습니다...