2017-10-05 2 views
1

Je tente de configurer un conteneur Docker pour Windows pour créer et héberger un site Web statique simple utilisant lite-server et Sphinx. Je cours d'abord le conteneur.Le site Web hébergé localement par un conteneur Windows Docker pour Windows n'est pas disponible via localhost

$ docker run -it -p 8080:8080 -v "$(pwd):C:\src" website 

Ensuite, démarrez lite-server.

$ yarn serve 

Le site est disponible à partir de l'adresse IP du conteneur (par exemple, http://172.26.141.28:8080) donc je sais serveur Lite est au service du contenu, mais je ne peux pas accéder au contenu avec http://localhost:8080.

Comment puis-je exposer le site Web via localhost: 8080?

Mon Dockerfile est la suivante

FROM microsoft/windowsservercore 

ENV chocolateyUseWindowsCompression false 
RUN powershell -Command \ 
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')); 

RUN choco install nodejs -y 
RUN choco install yarn -y 
RUN choco install python3 -y 
RUN pip install sphinx 
RUN pip install sphinx_rtd_theme 

# https://github.com/nodejs/node/issues/8897#issuecomment-319010735 
# Workaround for error An unexpected error occurred: "ENOENT: no such file or directory, lstat 'C:\\ContainerMappedDirectories'". 
RUN mkdir C:\src 
RUN powershell Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices' -Name 'S:' -Value '\??\C:\src' -Type String 
WORKDIR 'S:\\' 

EXPOSE 8080 
CMD ["powershell"] 

lite-serveur est lancé avec

"scripts": { 
    "serve": "light-server -s ./build/html -p 8080" 
}, 

Logiciel:

  • Version Docker 17.06.2-ce, construire cec0b72
  • Windows 10 (hôte)
  • Windowsservercore (conteneur)
+0

Ceci est un bogue connu dans les conteneurs Windows où l'accès au port mappé depuis localhost ne fonctionne pas. Essayez d'accéder à ce port à partir de la machine externe –

Répondre

0

Votre fichier docker dit que vous exposez le port 8080 et vous mappez à 8091.

essayez d'exécuter la commande suivante,

run docker - il -p : 8080 -v "$ (PWD): C: \ src" site

Vous devriez pouvoir naviguer à http://localhost:8080

Espérons que ça aide.

+0

Oups. 8091 était une faute de frappe. Je l'ai corrigé depuis. J'ai essayé différents ports pour l'hôte, 8080, 8091, et d'autres. Même résultat, je ne peux pas accéder au site Web dans le conteneur via localhost: port. –