시작
목적
.NET으로 마이크로 서비스를 생성하기 위한 빌딩 블록에 익숙해지세요.
필수 구성 요소
완료 시간
15분
시나리오
값 목록을 반환하는 간단한 서비스를 만든 다음 Docker 컨테이너에서 서비스를 실행합니다.
.NET SDK 설치
.NET 앱 빌드를 시작하려면 .NET SDK(소프트웨어 개발 키트)를 다운로드하여 설치하세요.
올바르게 설치된 모든 것을 확인하세요
설치한 후 새 명령 프롬프트를 열고 다음 명령을 실행합니다.
설치한 후 새 터미널을 열고 다음 명령을 실행합니다.
설치에 성공하면 다음과 유사한 출력이 표시됩니다.
Command prompt
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help Display help.
--info Display .NET information.
--list-sdks Display the installed SDKs.
--list-runtimes Display the installed runtimes.
path-to-application:
The path to an application .dll file to execute.
모든 것이 정상이면 아래의 계속 버튼을 선택하여 다음 단계로 이동합니다.
오류가 있나요?
'dotnet'이 내부 또는 외부 명령 오류로 인식되지 않는 경우 새 명령 프롬프트를 열어야 합니다. 문제를 해결할 수 없는 경우 문제 해결에 대한 도움말을 보려면 문제 발생 버튼을 사용하세요.
zsh: 명령을 찾을 수 없는 경우: dotnet 오류가 발생하면 새 터미널 창을 열어야 합니다. 문제를 해결할 수 없는 경우 문제 해결에 대한 도움말을 보려면 문제가 발생한 버튼을 사용하세요.
dotnet: 명령을 찾을 수 없음 오류가 표시되면 새 터미널 창을 열었는지 확인하세요. 문제를 해결할 수 없는 경우 문제가 발생했습니다 버튼을 사용하여 문제 해결에 대한 도움을 받으세요.
서비스 만들기
명령 프롬프트에서 다음 명령을 실행하여 앱을 만듭니다.
터미널에서 다음 명령을 실행하여 앱을 만듭니다.
Terminal Copy
dotnet new webapi -o MyMicroservice --no-https -f net7.0
그런 다음 이전 명령으로 만든 새 디렉터리로 이동합니다.
Terminal Copy
cd MyMicroservice
이러한 명령은 무엇을 의미하나요?
dotnet
명령은 webapi
유형의 새 애플리케이션(REST API 엔드포인트)을 만듭니다.
-o
매개 변수는 앱이 저장되는 MyMicroservice
라는 디렉터리를 생성합니다.
--no-https
플래그는 배포를 간단하게 유지하기 위해 HTTPS 인증서 없이 실행되는 앱을 만듭니다.
-f
매개 변수는 .NET 7 애플리케이션을 만들고 있음을 나타냅니다.
cd MyMicroservice
명령은 새로 만든 앱 디렉터리에 사용자를 배치합니다.
생성된 코드
실행할 준비가 된 간단한 서비스를 제공하기 위해 MyMicroservice
디렉터리에 여러 파일이 생성되었습니다.
MyMicroservice.csproj
는 프로젝트가 참조하는 라이브러리 등을 정의합니다.
Program.cs
에는 앱이 시작될 때 로드되는 모든 설정과 구성이 포함됩니다.
Controllers/WeatherForecastController.cs
에는 다음 5일 동안의 일기 예보를 반환하는 간단한 API용 코드가 있습니다.
Properties
디렉터리 내의 launchSettings.json
파일은 로컬 개발 환경에 대한 다양한 프로필 설정을 정의합니다. 5000-5300 사이의 포트 번호는 프로젝트 생성 시 자동으로 할당되어 이 파일에 저장됩니다.
다음 코드는 Controllers
디렉터리에 있는 WeatherForecastController.cs
파일의 내용을 보여줍니다.
WeatherForecastController.cs
using Microsoft.AspNetCore.Mvc;
namespace MyMicroservice.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
다음 단계로 이동하려면 아래의 계속 버튼을 선택하세요.
오류가 있나요?
템플릿 "ASP.NET Core Web API"를 만들 수 없습니다. 템플릿을 만들지 못했습니다. 세부 정보: 'C:\Windows\System32\MyMicroservice' 경로에 대한 액세스가 거부되었습니다 와 비슷한 메시지를 받으면 현재 디렉터리를 새 폴더를 만들 수 있는 권한이 있는 디렉터리로 변경하고 명령을 다시 실행해 보세요.
프로젝트를 만들려고 할 때 Windows에서 SDK를 찾을 수 없고 SDK를 설치했다고 확신하는 경우 컴퓨터에 PATH 환경 변수에 문제가 있을 수 있습니다. 이 문제를 진단하고 수정하는 방법에 대한 지침은 이 Stack Overflow 게시물 을 참조하세요.
발생한 문제를 해결할 수 없는 경우 아래의 문제가 발생했습니다 버튼을 선택하여 문제 해결에 대한 도움을 받으세요.
서비스 실행
다음과 유사한 출력이 표시되어야 합니다.
Command prompt
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에서 수신 대기 중임을 나타내므로 다음 이미지는 URL http://localhost:5020/WeatherForecast
를 보여줍니다.
축하합니다. 간단한 서비스가 실행되었습니다!
명령 프롬프트에서 CTRL +C 를 눌러 서비스를 로컬로 실행하는 dotnet run
명령을 종료합니다.
터미널에서 CTRL +C 를 눌러 서비스를 로컬로 실행하는 dotnet run
명령을 종료합니다.
Docker 설치
Docker는 앱과 해당 구성 및 종속성을 컨테이너라는 독립적으로 배포 가능한 단일 단위로 결합할 수 있는 플랫폼입니다.
Docker가 이미 설치되어 있는 경우 버전 20.10 이상인지 확인하세요.
다운로드 및 설치
설치 관리자를 다운로드하기 전에 Docker Store에 등록하라는 메시지가 표시됩니다.
기본적으로 Docker는 Windows에서 Linux 컨테이너를 사용합니다. 설치 프로그램에 메시지가 표시되면 이 구성 설정을 그대로 두세요.
Windows용 Docker 가져오기
Docker를 설치한 후 설치를 완료하기 위해 로그아웃하라는 메시지가 표시될 수 있습니다.
Docker를 사용할 준비가 되었는지 확인
설치한 후 새 명령 프롬프트를 열고 다음 명령을 실행합니다.
설치한 후 새 터미널을 열고 다음 명령을 실행합니다.
Terminal Copy
docker --version
명령이 실행되어 일부 버전 정보가 표시되면 Docker가 성공적으로 설치된 것입니다.
Docker 메타데이터 추가
Docker 이미지로 실행하려면 Dockerfile
—가 필요합니다. 이는 Docker 이미지로 앱을 빌드하는 방법에 대한 지침이 포함된 텍스트 파일입니다. Docker 이미지는 앱을 Docker 컨테이너로 실행하는 데 필요한 모든 것을 포함합니다.
앱 디렉터리로 돌아가기
이전 단계에서 새 명령 프롬프트를 열었으므로 서비스를 만든 디렉터리로 돌아가야 합니다.
이전 단계에서 새 터미널을 열었으므로 서비스를 만든 디렉터리로 돌아가야 합니다.
Terminal Copy
cd MyMicroservice
DockerFile 추가
다음 명령을 사용하여 Dockerfile
이라는 파일을 만듭니다.
Terminal Copy
touch Dockerfile
Terminal Copy
fsutil file createnew Dockerfile 0
그런 다음 좋아하는 텍스트 편집기에서 열 수 있습니다.
그런 다음, 즐겨 찾는 텍스트 편집기에서 수동으로 열거나 다음 명령을 사용하여 열 수 있습니다.
Terminal Copy
open Dockerfile
Terminal Copy
start Dockerfile
텍스트 편집기에서 Dockerfile
의 내용을 다음으로 바꿉니다.
Dockerfile Copy
FROM mcr.microsoft.com/dotnet/sdk:7.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:7.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
참고: 파일 이름을 Dockerfile.txt
또는 다른 이름이 아닌 Dockerfile
로 지정해야 합니다.
선택 사항: .dockerignore 파일 추가
.dockerignore 파일은 'docker 빌드'의 일부로 사용되는 파일 집합을 줄입니다. 파일이 적을수록 빌드 속도가 빨라집니다.
다음 명령을 사용하여 .dockerignore
파일(익숙한 경우 .gitignore
파일과 유사)이라는 파일을 만듭니다.
Terminal Copy
touch .dockerignore
Terminal Copy
fsutil file createnew .dockerignore 0
그런 다음 좋아하는 텍스트 편집기에서 열 수 있습니다.
그런 다음, 즐겨 찾는 텍스트 편집기에서 수동으로 열거나 다음 명령을 사용하여 열 수 있습니다.
Terminal Copy
open .dockerignore
Terminal Copy
start .dockerignore
텍스트 편집기에서 .dockerignore
내용을 다음으로 바꿉니다.
.dockerignore Copy
Dockerfile
[b|B]in
[O|o]bj
Docker 이미지 만들기
다음 명령을 실행하세요.
Terminal Copy
docker build -t mymicroservice .
docker build
명령은 Dockerfile
을 사용하여 Docker 이미지를 빌드합니다.
-t mymicroservice
매개 변수는 이미지에 mymicroservice
로 태그를 지정(또는 이름 지정)하도록 지시합니다.
마지막 매개 변수는 Dockerfile
을 찾는 데 사용할 디렉터리를 알려줍니다(.
는 현재 디렉터리를 지정함).
이 명령은 Docker 이미지를 생성하기 위해 모든 종속성을 다운로드하고 빌드하며 시간이 걸릴 수 있습니다.
다음 명령을 실행하여 방금 만든 이미지를 포함하여 컴퓨터에서 사용 가능한 모든 이미지 목록을 볼 수 있습니다.
Terminal Copy
docker images
Docker 이미지 실행
다음 명령을 사용하여 컨테이너에서 앱을 실행할 수 있습니다.
Terminal Copy
docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice
다음 URL로 이동하여 컨테이너에서 실행 중인 애플리케이션에 액세스할 수 있습니다. http://localhost:3000/WeatherForecast
선택적으로 다음 명령을 사용하여 별도의 명령 프롬프트에서 실행 중인 컨테이너를 볼 수 있습니다.
선택적으로 다음 명령을 사용하여 별도의 터미널 창에서 실행 중인 컨테이너를 볼 수 있습니다.
명령 프롬프트에서 CTRL +C 를 눌러 컨테이너에서 서비스를 실행하는 docker run
명령을 종료합니다.
터미널에서 CTRL +C 를 눌러 컨테이너에서 서비스를 실행하는 docker run
명령을 종료합니다.
축하합니다! Docker 컨테이너를 사용하여 배포 및 확장할 수 있는 소규모 독립 서비스를 성공적으로 만들었습니다.
마이크로 서비스의 기본 빌딩 블록입니다.
다음 단계
축하합니다! 간단한 서비스를 만든 다음 Docker 컨테이너에서 실행했습니다.
이제 다음 자습서를 통해 클라우드에 마이크로 서비스를 배포하는 방법을 배울 수 있습니다.
자습서: Azure에 마이크로 서비스 배포
귀하는 다음 항목에도 또한 관심이 있을 수 있습니다...