在HTTPS上运行Docker服务

ddarikpa  于 2023-11-17  发布在  Docker
关注(0)|答案(3)|浏览(122)

目前,我使用以下文件运行一个简单的docker容器。
Dockerfile

FROM microsoft/aspnet:4.7.1
WORKDIR /inetpub/wwwroot
EXPOSE 80
COPY index.html .

字符串
docker-compose.yml

version: '3.4'

services:

testapp:
  image: mytestapp:${TAG:-latest}
build:
  context: .
  dockerfile: Dockerfile


docker-compose.override.yml

version: '3.4'

services:
  testapp:
   ports:
    - "9091:80"


我使用windows image通过以下命令创建我的容器,我可以通过http://localhost:9091/访问它。

docker-compose -f docker-compose.yml -f docker-compose.override.yml build


我想使用HTTPS而不是HTTP访问我的应用程序。
我需要遵循哪些步骤?

5uzkadbs

5uzkadbs1#

谢谢杰罗姆的回答。我做了以下事情来让https在我的容器上工作。我希望这可能对某人有帮助。
此图像上有IIS。
1.将自签名证书添加到此脚本中的映像:

证书. ps1

1.创建自签名证书。
1.将其安装在本地证书存储中。
1.创建HTTPs绑定并将生成的SelfSign证书添加到包含我的Web应用程序的默认网站

import-module webadministration

cd cert:
$cert = New-SelfSignedCertificate -DnsName myweb -Friendlyname MyCert -CertStoreLocation Cert:\LocalMachine\My

$rootStore = New-Object System.Security.Cryptography.X509Certificates.X509Store -ArgumentList Root, LocalMachine

$rootStore.Open("MaxAllowed")
$rootStore.Add($cert)
$rootStore.Close()

cd iis:
new-item -path IIS:\SslBindings\0.0.0.0!443 -value $cert
New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
iisreset

字符串
1.修改了我的docker-compose.override.yml文件:添加了端口443。

version: '3.4'
     services:
       testapp.svc:
         ports:
           - "9091:80"
           - "9092:443"


1.我的Dockerfile中的更改

FROM microsoft/aspnet:4.7.1
    WORKDIR /inetpub/wwwroot
    EXPOSE 80 
    EXPOSE 443
    COPY index.html .
    COPY certificate.ps1 .
    RUN powershell.exe ./certificate.ps1

yacmzcpb

yacmzcpb2#

1.您需要配置您的Web服务器(在Docker应用程序中)以启用HTTPS。

  • 在docker上打开SSL端口(443)
  • 您可以考虑使用NGINX作为Web服务器的反向代理,并在nginx中配置SSL
  • 另一方面,如果这是一个公共网站,你可以查看letsencrypt为你的域名获取免费的SSL证书。

相关问题