Docker化你的所有Web服务

不是为了别的,就是想试试能多大程度的使用Docker来部署常用的Web服务,以及为我们带来了什么好处。我所常用的Web服务包括:

  • 启用了HTTPS的Web服务。包括主页,博客,以及某站镜像
  • Ghost搭建的博客服务
  • 科学上网服务

1.启用了HTTPS的Web服务

该服务除了使用nginx搭建基于80和443的服务外,很重要的是要定期维护来自于Let's Encrypt的免费SSL证书。而使用Docker后,就可以利用Docker内置的自动renew来完成证书更新工作了。我所使用的镜像是linuxserver/letsencrypt,命令如下:

docker run  --name=letsencrypt -v /home/tl/nginx:/config -e URL=tonylee.name -e EMAIL=tony1016@gmail.com -e SUBDOMAINS=veesp,story,so -e VALIDATION=http -p 80:80 -p 443:443 --restart=always linuxserver/letsencrypt

完成后nginx的配置文件被映射到了/home/tl/nginx/nginx/site-confs,除了配置各种代理和映射关系外,关于证书的操作就全部不需要了,非常方便。

2.Ghost搭建的博客服务

该服务通常部署的最讨厌的问题是安装npm和nodejs等问题了。我使用了官方的镜像ghost:1-alpine。该镜像基于Alpine,搭建了1.X版本的Ghost平台。命令如下:

docker run --name=ghost -v /home/tl/ghost/:/var/lib/ghost/content -d -p 172.17.0.1:2368:2368 -e url=http://story.tonylee.name --restart=always ghost:1-alpine

可以看到我把博客数据映射到了主机的/home/tl/ghost/下,同时我使用gdrive工程将博客数据和我的谷歌云端硬盘进行了同步,这样子恢复博客只需要从云盘拉下来即可。

3.科学上网服务

确实因为Ubuntu有PPA,所以手动部署也就是几句命令的事情。那Docker带来了哪些便利呢?答案是:NO。

Just For Fun

我使用了这个镜像gists/shadowsocks-libev。命令如下:

docker run -d --name ssserver -p xxx:xxx -p xxx:xxx/udp -e PASSWORD="xxx" -e METHOD=chacha20-ietf-poly1305 -e SERVER_PORT="xxx" -e PLUGIN_OPTS="obfs=http;failover=172.17.0.1:80;fast-open" --restart=always gists/shadowsocks-libev:over-obfs

4.总结以下

其实对于一些小的服务,docker也带来不了多大的好处,顶多就是文件系统很干净。但是如果是Metasploit或者Gitlab,你就知道docker会多快捷了。总结就是,如果该项目需要依赖某个需要安装的开发语言环境,那最好还是Docker部署,即干净,又不会带来语言版本冲突问题。

Show Comments