前言
服务器上托管静态资源是非常常见的需求,可以使用Nginx等工具实现http请求的反向代理。 用Nginx的代理静态资源其实很简单,但如果我们想用Docker容器呢?
这里推荐一个超级轻量且简单易用的镜像–darkhttpd
。
简介
Darkhttpd 是一个简单且高效的HTTP/1.1 Web服务器,专注于提供静态内容服务。
它的docker镜像超级小,只有10MB左右,但性能优异。
它已经封装好了HTTP处理程序,并为你提供了一个特定的文件夹和一个固定端口。 你可以通过HTTP和此端口访问特定文件夹中的内容,我们很快就会介绍。
它还和其他容器一样提供了日志功能,你可以查看容器收到了哪些HTTP请求。
安装
镜像全名是alpinelinux/darkhttpd
。
docker pull alpinelinux/darkhttpd
使用
Darkhttpd容器内部使用8080
端口,提供/var/www/localhost/htdocs
目录的访问。
这个目录是空的,什么都没有,需要你主动添加文件。推荐的方式是通过命名卷挂载此目录或直接绑定到本地主机。
创建容器的样例代码:
docker run -d -p 18081:8080 -v my_volumes:/var/www/localhost/htdocs alpinelinux/darkhttpd:latest
我们将容器内的8080端口绑定到了主机的18081端口,并且在指定目录挂载了命名卷。 现在可以向命名卷里面放任意资源,然后通过http请求访问资源。
比如http://localhost:18081/hello.jpg
访问的就是容器内的/var/www/localhost/htdocs/hello.jpg
。
如果文件夹存在index.html
,则可以直接通过http://localhost:18081/
访问它,省略index.html
。
所以你还可以用它部署静态网页,比如WIKI或个人博客。
允许外部访问
现在你可以直接打开防火墙,允许外部程序访问此端口(主机上的端口)。
如果需要,也可以使用Nginx反向代理此端口,从而实现域名访问、SSL证书配置等功能。