Docker使用静态html文件运行容器

时间:2019-01-07 17:50:51

标签: docker

我可以运行仅包含静态html文件的容器,并使用Nginx容器将请求代理到该容器吗?我的想法是使用Nginx容器将请求代理到多个网站,但那些网站仅包含静态html文件,可以吗?

我已经用静态文件构建了一个docker镜像

FROM alpine:3.7 COPY /build/ /srv/www/web/

在构建文件夹中只有index.html,然后运行此图像,然后显示为Exited (0)

2 个答案:

答案 0 :(得分:1)

运行docker映像时,它将运行一个进程-请参阅Dockerfile文档中的 CMD 指令。您的静态文件容器没有任何进程要运行,因此它将立即退出。

您可以使用nginx图像来提供静态文件-在dockerhub上搜索nginx:该图像的howto部分将告诉您如何操作。 (基本上可以将静态文件挂载为卷,也可以通过将静态文件添加到其中来创建派生图像)

修改

要服务多个站点,必须配置nginx。 nginx docker映像文档的“复杂配置”部分显示了如何安装自定义 nginx.conf 的示例。您必须阅读nginx文档,了解如何设置多个站点。

因此从docker角度看,您只需要nginx图像。在最简单的情况下,所有站点文件都在一个目录下,您必须将其挂载为Docker卷。并且您需要挂载您的自定义nginx.conf。

edit2

但是,如果您只想在一台服务器上运行Nginx,则可能不值得使用docker。只需在服务器上安装nginx。

答案 1 :(得分:0)

如果您希望单个NGINX将请求代理到多个网站,则可以尝试遵循this guide。例如,如果要向所有站点添加TLS / SSL,这是很常见的事情。例如,我有10个子域,还有一个代理,可在添加TLS / SSL的同时将呼叫路由到每个站点。但我使用traefik代替了NGINX,因为它具有更好的Lets Encrypt支持。