web-dev-qa-db-fra.com

Exécuter le service Docker sur HTTPS

Actuellement, j'exécute un simple conteneur Docker en utilisant les fichiers suivants.

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"

J'utilise l'image Windows pour créer mon conteneur en utilisant la commande suivante et je peux y accéder par http: // localhost: 9091 / .

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

Je souhaite accéder à mon application en utilisant HTTPS au lieu de http.

Quelles sont les étapes que je dois suivre?

8
marvelTracker
  1. Vous devez configurer votre serveur Web (à l'intérieur de l'application Docker) pour activer HTTPS.
  2. Port SSL ouvert (443) sur docker

    • Vous pouvez envisager d'utiliser NGINX comme proxy inverse de votre serveur Web et configurer SSL dans nginx
    • D'un côté, vous pouvez regarder letsencrypt pour obtenir un certificat SSL gratuit pour votre domaine s'il s'agit d'un site public.
6
Jerome Anthony

Merci Jérôme pour la réponse. J'ai fait les choses suivantes pour que https fonctionne sur mon conteneur. J'espère que cela pourrait être utile à quelqu'un.

  1. Ajoutez un certificat auto-signé à l'image de ce script:

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. Changements dans mon docker-compose.override.yml fichier: ajout du port 443.
   version: '3.4'
     services:
       testapp.svc:
         ports:
           - "9091:80"
           - "9092:443"
  1. Changements dans mon 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