HTTPS를 통해 Docker Compose를 사용하여 ASP.NET Core 이미지 호스팅
ASP.NET Core는 기본적으로 HTTPS를 사용합니다. HTTPS는 신뢰 identity및 암호화를 위해 인증서를 사용합니다.
이 문서에서는 HTTPS를 사용하여 미리 작성된 컨테이너 이미지를 실행하는 방법을 설명합니다.
개발 시나리오는 HTTPS를 통해 Docker를 사용하여 ASP.NET Core 애플리케이션 개발을 참조하세요.
이 샘플에서는 Docker 17.06 이상의 Docker 클라이언트가 필요합니다.
필수 조건
이 문서의 지침 중 일부에는 .NET Core 2.2 SDK 이상이 필요합니다.
인증서
도메인에 대한 프로덕션 호스팅을 위해서는 인증 기관의 인증서가 필요합니다. Let's Encrypt는 무료 인증서를 제공하는 인증 기관입니다.
이 문서에서는 자체 서명된 개발 인증서를 사용하여 미리 빌드된 이미지를 localhost
에서 호스팅합니다. 지침은 프로덕션 인증서를 사용하는 것과 유사합니다.
프로덕션 인증서의 경우:
dotnet dev-certs
도구는 필수 항목이 아닙니다.- 지침에 사용되는 위치에 인증서를 저장할 필요는 없습니다. 사이트 디렉터리 외부 임의의 위치에 인증서를 저장합니다.
다음 섹션에 포함된 지침으로 docker-compose.yml에 있는 volumes
속성을 사용하여 인증서를 컨테이너에 탑재할 수 있습니다. Dockerfile에 있는 COPY
명령으로 컨테이너 이미지에 인증서를 추가할 수는 있지만 권장되지는 않습니다. 다음과 같은 이유로 인증서를 이미지로 복사하는 것은 권장되지 않습니다.
- 개발자 인증서를 사용하여 테스트하는 데 동일한 이미지를 사용하는 것은 어렵습니다.
- 프로덕션 인증서를 사용하여 호스팅하는 데 동일한 이미지를 사용하는 것은 어렵습니다.
- 인증서 공개에는 상당한 위험이 있습니다.
docker compose를 사용하여 https 지원으로 컨테이너 시작
운영 체제 구성에 대해 다음 지침을 따르십시오.
Linux 컨테이너를 사용한 Windows
인증서 생성 및 로컬 컴퓨터 구성:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
.NET CLI를 사용하는 이전 명령:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
위의 명령에서 $CREDENTIAL_PLACEHOLDER$
를 암호로 바꿉니다.
다음 콘텐츠를 사용하여 docker-compose.debug.yml 파일을 만듭니다.
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
docker compose 파일에 지정된 암호는 인증서에 사용된 암호와 일치해야 합니다.
HTTPS용으로 구성된 ASP.NET Core를 사용하여 컨테이너를 시작합니다.
docker-compose -f "docker-compose.debug.yml" up -d
macOS 또는 Linux
인증서 생성 및 로컬 컴퓨터 구성:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Linux에서는 dotnet dev-certs https --trust
.NET 9 SDK 이상이 필요합니다. .NET 8.0.401 SDK 이하의 Linux의 경우 인증서 신뢰에 대한 Linux 배포 설명서를 참조하세요.
위의 명령에서 $CREDENTIAL_PLACEHOLDER$
를 암호로 바꿉니다.
다음 콘텐츠를 사용하여 docker-compose.debug.yml 파일을 만듭니다.
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
docker compose 파일에 지정된 암호는 인증서에 사용된 암호와 일치해야 합니다.
HTTPS용으로 구성된 ASP.NET Core를 사용하여 컨테이너를 시작합니다.
docker-compose -f "docker-compose.debug.yml" up -d
Windows 컨테이너를 사용하는 Windows
인증서 생성 및 로컬 컴퓨터 구성:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
위의 명령에서 $CREDENTIAL_PLACEHOLDER$
를 암호로 바꿉니다.
다음 콘텐츠를 사용하여 docker-compose.debug.yml 파일을 만듭니다.
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
docker compose 파일에 지정된 암호는 인증서에 사용된 암호와 일치해야 합니다.
HTTPS용으로 구성된 ASP.NET Core를 사용하여 컨테이너를 시작합니다.
docker-compose -f "docker-compose.debug.yml" up -d
참고 항목
ASP.NET Core는 기본적으로 HTTPS를 사용합니다. HTTPS는 신뢰 identity및 암호화를 위해 인증서를 사용합니다.
이 문서에서는 HTTPS를 사용하여 미리 작성된 컨테이너 이미지를 실행하는 방법을 설명합니다.
개발 시나리오는 HTTPS를 통해 Docker를 사용하여 ASP.NET Core 애플리케이션 개발을 참조하세요.
이 샘플에서는 Docker 17.06 이상의 Docker 클라이언트가 필요합니다.
필수 조건
이 문서의 지침 중 일부에는 .NET Core 2.2 SDK 이상이 필요합니다.
인증서
도메인에 대한 프로덕션 호스팅을 위해서는 인증 기관의 인증서가 필요합니다. Let's Encrypt는 무료 인증서를 제공하는 인증 기관입니다.
이 문서에서는 자체 서명된 개발 인증서를 사용하여 미리 빌드된 이미지를 localhost
에서 호스팅합니다. 지침은 프로덕션 인증서를 사용하는 것과 유사합니다.
프로덕션 인증서의 경우:
dotnet dev-certs
도구는 필수 항목이 아닙니다.- 지침에 사용되는 위치에 인증서를 저장할 필요는 없습니다. 사이트 디렉터리 외부 임의의 위치에 인증서를 저장합니다.
다음 섹션에 포함된 지침으로 docker-compose.yml에 있는 volumes
속성을 사용하여 인증서를 컨테이너에 탑재할 수 있습니다. Dockerfile에 있는 COPY
명령으로 컨테이너 이미지에 인증서를 추가할 수는 있지만 권장되지는 않습니다. 다음과 같은 이유로 인증서를 이미지로 복사하는 것은 권장되지 않습니다.
- 개발자 인증서를 사용하여 테스트하는 데 동일한 이미지를 사용하는 것은 어렵습니다.
- 프로덕션 인증서를 사용하여 호스팅하는 데 동일한 이미지를 사용하는 것은 어렵습니다.
- 인증서 공개에는 상당한 위험이 있습니다.
docker compose를 사용하여 https 지원으로 컨테이너 시작
운영 체제 구성에 대해 다음 지침을 따르십시오.
Linux 컨테이너를 사용한 Windows
인증서 생성 및 로컬 컴퓨터 구성:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
.NET CLI를 사용하는 이전 명령:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
위의 명령에서 $CREDENTIAL_PLACEHOLDER$
를 암호로 바꿉니다.
다음 콘텐츠를 사용하여 docker-compose.debug.yml 파일을 만듭니다.
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
docker compose 파일에 지정된 암호는 인증서에 사용된 암호와 일치해야 합니다.
HTTPS용으로 구성된 ASP.NET Core를 사용하여 컨테이너를 시작합니다.
docker-compose -f "docker-compose.debug.yml" up -d
macOS 또는 Linux
인증서 생성 및 로컬 컴퓨터 구성:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
는 macOS 및 Windows에서만 지원됩니다. 배포에서 지원되는 방식으로 Linux에서 인증서를 신뢰해야 합니다. 브라우저에서 인증서를 신뢰해야 할 수도 있습니다.
위의 명령에서 $CREDENTIAL_PLACEHOLDER$
를 암호로 바꿉니다.
다음 콘텐츠를 사용하여 docker-compose.debug.yml 파일을 만듭니다.
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
docker compose 파일에 지정된 암호는 인증서에 사용된 암호와 일치해야 합니다.
HTTPS용으로 구성된 ASP.NET Core를 사용하여 컨테이너를 시작합니다.
docker-compose -f "docker-compose.debug.yml" up -d
Windows 컨테이너를 사용하는 Windows
인증서 생성 및 로컬 컴퓨터 구성:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
위의 명령에서 $CREDENTIAL_PLACEHOLDER$
를 암호로 바꿉니다.
다음 콘텐츠를 사용하여 docker-compose.debug.yml 파일을 만듭니다.
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
docker compose 파일에 지정된 암호는 인증서에 사용된 암호와 일치해야 합니다.
HTTPS용으로 구성된 ASP.NET Core를 사용하여 컨테이너를 시작합니다.
docker-compose -f "docker-compose.debug.yml" up -d
참고 항목
ASP.NET Core