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)
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 –