HTTPS üzerinden Docker Compose ile ASP.NET Core görüntüleri barındırma
ASP.NET Core varsayılan olarak HTTPS kullanır. HTTPS güven, identityve şifreleme sertifikalarını kullanır.
Bu belgede, HTTPS ile önceden oluşturulmuş kapsayıcı görüntülerinin nasıl çalıştırılacakları açıklanmaktadır.
Geliştirme senaryoları için bkz . HTTPS üzerinden Docker ile ASP.NET Core Uygulamaları Geliştirme.
Bu örnek, Docker istemcisinin Docker 17.06 veya sonraki bir sürümünü gerektirir.
Önkoşullar
Bu belgedeki bazı yönergeler için .NET Core 2.2 SDK veya üzeri gereklidir.
Sertifikalar
Bir etki alanı için üretim barındırma için sertifika yetkilisinden bir sertifika gereklidir. Let's Encrypt ücretsiz sertifikalar sunan bir sertifika yetkilisidir.
Bu belge, üzerinde localhost
önceden oluşturulmuş görüntüleri barındırmak için otomatik olarak imzalanan geliştirme sertifikalarını kullanır. Yönergeler, üretim sertifikalarını kullanmaya benzer.
Üretim sertifikaları için:
- Araç
dotnet dev-certs
gerekli değildir. - Sertifikaların yönergelerde kullanılan konumda depolanması gerekmez. Sertifikaları site dizini dışında herhangi bir konumda depolayın.
Aşağıdaki bölümde yer alan yönergeler birim bağlama sertifikaları docker-compose.yml özelliğini kullanarak volumes
kapsayıcılara bağlar. Dockerfile içindeki bir COPY
komutla kapsayıcı görüntülerine sertifika ekleyebilirsiniz, ancak önerilmez. Aşağıdaki nedenlerden dolayı sertifikaların bir görüntüye kopyalanması önerilmez:
- Geliştirici sertifikalarıyla test etmek için aynı görüntüyü kullanmayı zorlaştırır.
- Üretim sertifikalarıyla barındırma için aynı görüntüyü kullanmayı zorlaştırır.
- Sertifikanın açığa çıkması önemli bir risktir.
Docker compose kullanarak https desteğiyle kapsayıcı başlatma
İşletim sistemi yapılandırmanız için aşağıdaki yönergeleri kullanın.
Linux kapsayıcılarını kullanan Windows
Sertifika oluşturma ve yerel makineyi yapılandırma:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
.NET CLI kullanan önceki komut:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$
.
Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:
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 dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.
KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:
docker-compose -f "docker-compose.debug.yml" up -d
macOS veya Linux
Sertifika oluşturma ve yerel makineyi yapılandırma:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Linux'ta dotnet dev-certs https --trust
.NET 9 SDK veya üzerini gerektirir. .NET 8.0.401 SDK ve önceki sürümlerde Linux için, Linux dağıtımınızın sertifikaya güvenme belgelerine bakın.
Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$
.
Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:
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 dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.
KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:
docker-compose -f "docker-compose.debug.yml" up -d
Windows kapsayıcılarını kullanan Windows
Sertifika oluşturma ve yerel makineyi yapılandırma:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$
.
Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:
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 dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.
KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:
docker-compose -f "docker-compose.debug.yml" up -d
Ayrıca bkz.
ASP.NET Core varsayılan olarak HTTPS kullanır. HTTPS güven, identityve şifreleme sertifikalarını kullanır.
Bu belgede, HTTPS ile önceden oluşturulmuş kapsayıcı görüntülerinin nasıl çalıştırılacakları açıklanmaktadır.
Geliştirme senaryoları için bkz . HTTPS üzerinden Docker ile ASP.NET Core Uygulamaları Geliştirme.
Bu örnek, Docker istemcisinin Docker 17.06 veya sonraki bir sürümünü gerektirir.
Önkoşullar
Bu belgedeki bazı yönergeler için .NET Core 2.2 SDK veya üzeri gereklidir.
Sertifikalar
Bir etki alanı için üretim barındırma için sertifika yetkilisinden bir sertifika gereklidir. Let's Encrypt ücretsiz sertifikalar sunan bir sertifika yetkilisidir.
Bu belge, üzerinde localhost
önceden oluşturulmuş görüntüleri barındırmak için otomatik olarak imzalanan geliştirme sertifikalarını kullanır. Yönergeler, üretim sertifikalarını kullanmaya benzer.
Üretim sertifikaları için:
- Araç
dotnet dev-certs
gerekli değildir. - Sertifikaların yönergelerde kullanılan konumda depolanması gerekmez. Sertifikaları site dizini dışında herhangi bir konumda depolayın.
Aşağıdaki bölümde yer alan yönergeler birim bağlama sertifikaları docker-compose.yml özelliğini kullanarak volumes
kapsayıcılara bağlar. Dockerfile içindeki bir COPY
komutla kapsayıcı görüntülerine sertifika ekleyebilirsiniz, ancak önerilmez. Aşağıdaki nedenlerden dolayı sertifikaların bir görüntüye kopyalanması önerilmez:
- Geliştirici sertifikalarıyla test etmek için aynı görüntüyü kullanmayı zorlaştırır.
- Üretim sertifikalarıyla barındırma için aynı görüntüyü kullanmayı zorlaştırır.
- Sertifikanın açığa çıkması önemli bir risktir.
Docker compose kullanarak https desteğiyle kapsayıcı başlatma
İşletim sistemi yapılandırmanız için aşağıdaki yönergeleri kullanın.
Linux kapsayıcılarını kullanan Windows
Sertifika oluşturma ve yerel makineyi yapılandırma:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
.NET CLI kullanan önceki komut:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$
.
Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:
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 dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.
KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:
docker-compose -f "docker-compose.debug.yml" up -d
macOS veya Linux
Sertifika oluşturma ve yerel makineyi yapılandırma:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
yalnızca macOS ve Windows'ta desteklenir. Linux'taki sertifikalara dağıtımınız tarafından desteklenen şekilde güvenmeniz gerekir. Tarayıcınızda sertifikaya güvenmeniz gerekebilir.
Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$
.
Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:
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 dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.
KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:
docker-compose -f "docker-compose.debug.yml" up -d
Windows kapsayıcılarını kullanan Windows
Sertifika oluşturma ve yerel makineyi yapılandırma:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$
.
Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:
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 dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.
KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:
docker-compose -f "docker-compose.debug.yml" up -d
Ayrıca bkz.
ASP.NET Core