首页 > 解决方案 > 使用 docker IIS 容器运行本地网页

问题描述

运行 Docker for windows 以托管本地 IIS 以测试网页,使用默认的 windows IIS dockerpage

我不确定要更改 dockerfile 中的哪一部分以允许我运行我的网页。简单地编辑 dockerfile 中的 COPY 命令是我认为我需要更改的,但事实并非如此。我需要做什么才能让它运行不同的 html 文件而不是默认的 windows IIS 页面?

编辑:能够通过在我的 C: 中搜索 wwwroot 来找到打开的容器,我复制并粘贴了我的 hello world index.html 页面并且能够让它运行

标签: dockeriis

解决方案


您可以按照以下步骤操作:

使用您的网站创建 Dockerfile

FROM mcr.microsoft.com/windows/servercore/iis

RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*

WORKDIR /inetpub/wwwroot

COPY content/ .

然后,您可以构建并运行 Docker 映像:

$ docker build -t iis-site .
$ docker run -d -p 8000:80 --name my-running-site iis-site

无需在 Dockerfile 中指定 ENTRYPOINT,因为 microsoft/iis 基础映像已经包含一个用于监控 IIS 万维网发布服务 (W3SVC) 状态的入口点应用程序。

在当前版本中,您不能使用http://localhost从容器主机浏览您的站点。这是因为 WinNAT 中的一个已知行为,将来会得到解决。在解决该问题之前,您需要使用容器的 IP 地址。

容器启动后,您需要找到其 IP 地址,以便您可以从浏览器连接到正在运行的容器。您可以使用 docker inspect 命令执行此操作:

docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" my-running-site

您将看到与此类似的输出:

172.28.103.186

您可以使用 IP 地址和配置的端口连接正在运行的容器,在所示示例中为http://172.28.103.186:8000 。除了静态内容,IIS 还可以运行其他工作负载,包括但不限于 ASP.NET、ASP.NET Core、NodeJS、PHP 和 Apache Tomcat。

有关更多详细信息,您可以参考以下链接:

https://docs.microsoft.com/en-us/aspnet/mvc/overview/deployment/docker-aspnetmvc

https://mcpmag.com/articles/2019/11/20/iis-on-windows-server-containers.aspx

无法从浏览器访问 IIS 容器 - Docker


推荐阅读