静态网站使用 Docker





5.00/5 (1投票)
创建 Docker 容器以提供可从浏览器访问的静态 Web 内容。
本文的目标是描述一个从 Docker 容器提供静态网页文件的过程。
网站结构非常简单,仅包含 3 个文件
./site/
style.css
app.js
index.html
在项目根目录下,有一个 Dockerfile
./
Dockerfile
网站显示“Loading
”文本。当 JavaScript 文件加载时,Hello World
将以大号红色字体显示
这是 HTML 代码
< html>
< head>
< title>Sample Website
< script src="app.js">
< link href="style.css" rel="stylesheet" />
< /head>
< body>
Loading
< /body>
< /html>
这是 Dockerfile
FROM nanoserver/iis
COPY ./site/ /inetpub/wwwroot/
Dockerfile 中的行是创建 Web 服务器镜像的关键。该文件允许我们创建一个新的 Docker 镜像。该镜像用于运行 Docker 容器。
第一行指定基础镜像。在这种情况下,它是一个配置了 Nano Server with IIS 的镜像。通常,较小的 Web 服务器镜像更受欢迎。
第二行会将本地项目文件从“site”文件夹复制到 nanoserver 镜像的 wwwroot 文件夹。
这是启动 Web 服务器以提供网页所需的一切。要创建镜像,请从 docker build 开始
> docker build -t webserver-image:v1 .
docker build 命令用于创建镜像。当它从 Dockerfile 所在的目录的命令行执行时,该文件将被用于创建镜像。-t
选项允许命名和可选地标记镜像。在这种情况下,名称是 webserver-image,标签是 v1
。标签通常用于版本化镜像。最后一个参数是用于构建镜像的路径。在这种情况下,它是 .
,即当前目录。
运行该命令将构建镜像
> docker build -t webserver-image:v1 .
Sending build context to Docker daemon 26.11kB
Step 1/2 : FROM nanoserver/iis
---> 7eac2eab1a5c
Step 2/2 : COPY ./site/ /inetpub/wwwroot/
---> fca4962e8674
Successfully built fca4962e8674
Successfully tagged webserver-image:v1
构建成功。可以通过运行 docker image ls 来验证这一点
> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
webserver-image v1 ffd9f77d44b7 3 seconds ago 1.29GB
如果构建不成功,可能需要仔细检查一些事项。这包括确保 Dockerfile 可用、可以拉取 nanoserver 镜像以及路径是否准确。
现在已经创建了一个镜像,可以使用它来创建容器。这可以使用 docker run 命令来完成
> docker run --name web-dev -d -it -p 80:80 webserver-image:v1
运行该命令后,将显示容器 ID
> docker run --name web-dev -d -it -p 80:80 webserver-image:v1
fde46cdc36fabba3aef8cb3b91856dbd554ff22d63748d486b8eed68a9a3b370
已成功创建 Docker 容器。可以通过执行 docker container ls 来验证这一点
> docker container ls
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
fde46cdc36fa webserver-image:v1 "c:\\windows\\system32…" 31 seconds ago
Up 25 seconds 0.0.0.0:80->80/tcp web-dev
显示了容器 ID(是执行 docker run 时显示内容的较短版本)。用于容器的镜像也与创建时间、状态、端口和容器名称一起显示。
以下 docker inspect 命令将显示 IP 地址
> docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" web-dev
172.19.112.171
此 IP 地址可以在浏览器中调用以查看页面
现在有一个正在运行的容器,可以提供网页了!