NginxProxyManagerDocker建站最佳伴侣
本文首发于:https:blog。frytea。comarchives658
很长一段时间中,我都在思考容器建站的可行性。
容器有诸多益处,各类好处就不一一列举了。
在企业场景下,K8s几乎一骑绝尘,可以完成大规模集群统一管理,完成几乎所有Web资源的自动调度。
但强大功能的代价,就是系统本身势必占用一部分资源,这就不适合大部分小网站、小企业去使用了。
传统建站一般是使用虚拟主机的形式,使用宝塔、AppNode、cPanel之类的面板管理单节点站点,流量大了给服务器扩容、负载均衡、数据库外挂之类的也就解决了。
这种方案很适用于LAMP组合场景,可以让自己的想法快速成为现实。
在当代,各种新式编程语言大行其道,PHP的时代似乎已经过去,容器成为更复杂运行环境的最佳载体。
作为个人站长,近几年部署应用都会优先考虑使用容器,还尝试过k3s组建轻量k8s集群的方案,使用近一年下来总有种大炮打蚊子的感觉。
说了这么多,就是想引出一种适用于当代WEB服务部署,容器化,但又不需要多台服务器的容器方案。
方案的关键技术为DockerNginx的组合。
上层采用PortainerNginxProxyManager,满足UI管理的需求。部署方法
下面简单讲一下部署方法:Docker
因为Docker的部署方法网上资源较多,这里就不列举了,下面默认已安装docker。Portainer
Portainer是当下比较好用的一款DockerWebGUI,使用起来可以满足大部分需求了,部署方法也很简单,类似这样:dockerrundnetworkmyDefaultrestartalwaysnameportainerp9000:9000vvarrundocker。sock:varrundocker。sockvportainerdata:data6053537portainerce
其中的myDefault是自定义网桥,为兼容dockercompose等应用的外部访问,在这里不建议使用Docker默认网桥。
如果没有报错,就可以通过9000端口访问了,后面可以使用nginx反代此端口就可以关闭9000端口外部访问了。NginxProxyManager
这是一款nginxwebgui,使用下来体验不错,貌似内嵌了openrusty,基本可以满足Docker反代、HTTPS访问等的GUI配置需求了
使用如下dockercompose部署,可以直接在portainer操作:version:3services:app:hostname:nginxproxymanagerimage:jc21nginxproxymanager:latestrestart:unlessstoppedports:80:8081:81443:443volumes:。data:data。letsencrypt:etcletsencryptnetworks:default:external:truename:myDefault效果展示
我在这里使用的是某位大佬汉化的Portainer,为的是熟悉一下界面,简化操作,等熟悉了还是建议切回官方版本。
后面部署应用就在这里一站式搞定了,暴露外部访问时,就用NginxProxyManager:
反代配置界面如下:
以后在这里部署Docker应用,就可以很方便的暴露外部访问了,配了Portainer较好的生态和灵活的配置,几乎没有什么限制。总结
本文介绍了一种轻量(1C2G足矣)、容器化(DockerPortainer)、自动化(NginxProxyManager自动Https)的个人网站搭建方案,该方案几乎可以适应所有场景,更重要的是一台1C2G的服务器就足矣支撑数十个小应用。
自己使用或是外部访问都极其方便,再也不用纠结使用哪家面板,再也不用担心面板安全问题了。
我自己的图床、博客、Miniflux、网站统计、数据库以及一些自己开源的应用未来都计划部署在这里。
这就是今天分享的内容了,希望对你有用。
最后提醒一句,本文涉及的部署命令和配置文件随时有可能过时,请以官方文档为准。参考文献NginxProxyManagerDockerDocsPortainerComposespecificationDockerDockerEngineinstallationoverviewportainerce中文版在线nginx配置生成工具和nginx配置UI管理工具Docker管理面板Portainer中文汉化新增CE、EE企业版汉化