1

我正在尝试为 Windows 容器设置 Docker,以使用 lite-server 和 Sphinx 构建和托管一个简单的静态网站。我首先运行容器。

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

然后启动 lite-server。

$ yarn serve

该网站可从容器的 IP 地址(例如http://172.26.141.28:8080)获得,因此我知道 lite-server 正在提供内容,但我无法使用http://localhost:8080.

如何通过 localhost:8080 公开网站?

我的 Dockerfile 如下

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-server 启动

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

软件:

  • Docker 版本 17.06.2-ce,构建 cec0b72
  • Windows 10(主机)
  • Windowsservercore(容器)
4

2 回答 2

1

我不知道是否有更新,但截至一年前,这是预期的行为:

容器及其端口只能通过 NATed IP 地址访问。

见:https ://github.com/docker/for-win/issues/204#issuecomment-258638899 。

于 2017-10-05T12:21:38.800 回答
0

您的 docker 文件显示您在 8080 公开端口,并且在 8091 进行映射。

尝试运行以下命令,

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

您应该能够将其导航到http://localhost:8080

希望能帮助到你。

于 2017-10-05T02:30:52.343 回答