web-dev-qa-db-ja.com

HTTPSでdockerサービスを実行する

現在、次のファイルを使用して単純な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イメージを使用してコンテナーを作成し、 http:// localhost:9091 / でアクセスできます。

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

HttpではなくHTTPSを使用してアプリにアクセスしたい。

私が従う必要がある手順は何ですか?

8
marvelTracker
  1. HTTPSを有効にするには、Webサーバー(Dockerアプリケーション内)を構成する必要があります。
  2. DockerでSSLポート(443)を開きます

    • WebサーバーへのリバースプロキシとしてNGINXの使用を検討し、nginxでSSLを構成できます。
    • 一方で、letsencryptを見て、これがパブリックサイトである場合、ドメインの無料のSSL証明書を取得できます。
6
Jerome Anthony

ジェロームに答えてくれてありがとう。コンテナーでhttpsを機能させるために、次のことを行いました。これが誰かに役立つことを願っています。

  1. このスクリプトの画像に自己署名証明書を追加します。

certificate.ps1

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
8
marvelTracker