快速尝鲜基于 Docker 部署项目

平时工作学习中不可避免要接触到服务器运维工作,简单的 linux 操作是基础工作,打包上传部署应用更是家常便饭,如果只是为了应付工作需求,相信部署应用也不是特别麻烦伤神的一件事.

但是如果需要重复劳动同时操作多台服务器或者需要快速运行体验一下项目实际效果或者部署根本不熟悉的应用,那么不得不提到 Docker 容器化解决方案了!

编程语言千千万,学会三两种其实也不难,想要精通才是真正的考验,不可避免存在技术盲区,假如刚好遇到不太熟悉开源项目,想要快速体验一下运行效果,最最基本的条件就是先安装好运行环境!

一般来说,项目的运行环境依赖编程语言环境,而编程语言又依赖操作系统,所以想要快速配置好运行环境就要先装语言环境,设置语言环境的环境变量再配置项目,最后才能运行项目.

如果其中任何环节出错,那么这个安装过程就会非常耗时,尤其对于不熟悉的编程环境来说,很可能会配置镜像以及环境变量之类,这些都是相当大的挑战.

当成功安装好运行环境后,终于可以体验实际效果了,只会有两种情况,一是觉得效果不错,可以直接投放生产环境,二是觉得效果欠佳,白白浪费了这么多时间,最后还要卸载掉项目,顺便还要卸载运行环境.

这种反反复复的折腾最终只会让我们变得更加谨慎,不敢再去轻易尝试小众化的项目而是选择跟随主流选择评价比较高的优质项目.

Github 作为世界上最大的同性交友网站,从根本上改变了编程开发的方式,现在绝大多数开发需求都应该或多或少找到相关现成的轮子,再也不用重头开始造轮子.

Github 作为开源项目的托管平台,有着非常多的优质项目供我们学习参考,其中最重要的指标就是点赞量 Star .

开源项目的 Star 数越多表示项目越受欢迎,越有可能是优质项目,当然也不意味着 Star 数较少的项目质量就不行.

因为编程语言不同而产生的开源项目自然更是千差万别,即便是相同语言也不会有一模一样的开源项目(除非你是克隆 Fork 别人的项目),那么这些项目能否在某种意义上达到一种统一呢?

同一个世界,同样的需求但是却有不同的实现方式,而我们平时很有可能因为太注重于编程语言本身从而一定程度上忽略了实际需求,比如说: 客户只是想要搭建一个网站,不管你是用 Java 还是 Go 或者其他什么别的语言,只要能实现就行!

从编程语言自身的差异性到语言无关的统一性,这种思维方式的转变势必需要新的规范或者工具来实现,一旦完成编程语言的无关性,任何编程语言出身的开发者都能轻松玩转其他语言的项目.

如果你从未听说过 Docker 容器化或者并不知道自己到底是否需要了解 Docker ,那么我相信你大概是需要的,不然也不会看到现在了.

Docker 就是将不同编程语言的开发项目统一管理运行的一种解决方案,如果以码头运输货物举例的话,可能更加直观帮你理解什么是 Docker .

不同的编程语言开发的实际项目是迥然不同的,好比是现实中需要运输到目的港的货物也是不一样的,但是这些货物都不是零散分布的而是封箱统一的集装箱,所以开发项目类比于集装箱.

超级货轮上可以运输众多集装箱,货轮可以装箱,封箱,开箱等操作进行统一管理,并不在乎集装箱内部到底是什么货物,因此不同的开发项目都可以被超级货轮 Docker 进项统一管理调度.

超级货轮从始发港到目的港的运输过程就完成了集装箱的转移,正如项目可以从本地环境迁移到远程服务器环境,如果这种目的港始终都是同一个,那么就意味着这个港口存放着众多的集装箱!

假如这个目的港又是对外开放的话,港口的集装箱也是对外开放了,能够同时托管这么多数量巨大的集装箱也真的是超级港口,类比到软件开发上岂不是相当于众多项目被托管到公开仓库?

因为 Docker 负责托运着数量众多的集装箱,所以 Docker 自己建立了免费的 Docker Hub 托管网站.

既然目的港可以对外公开也可以对外隐藏,所以除了有公共仓库还有不少私有仓库,主要职责都是负责管理维护 Docker 运输来的集装箱.

web 服务器

Official build of Nginx : nginx

无论是 Github 还是 Dockerhub 网站,只要是浏览器上能够给人在线访问的网站都需要一款 Web 服务器提供对外服务.

Web 服务器也不是一家独大,市面上有着众多优秀的 Web 服务器供不同编程语言的开发者去选择,这里以 nginx 为例,讲解如何基于 Docker 快速搭建 Web 服务.

如果你没听说过 Nginx ,那你总听说过 Apache 或者 Tomcat 之类吧? 只是一种 Web 服务器而已!

如果没有注册过 Dockerhub 账号的话,可以现在就去注册一个账号,正如注册 Github 账号那样,方便后续上传自己的项目.

登录 Dockerhub 网站后直接搜索 nginx 找到下载量 download 或点赞量 star 最多的那个点击查看使用方法.

$ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

上述命令的含义是基于 docker 部署自定义路径下的静态网站,要求必须先指定网站路径

这里为了简单起见,还是跟着文章思路来部署 nginx 吧,当然官方介绍不是不可以而是针对有一定基础的 docker 用户更加适合.

docker pull nginx

在解释上述命令之前,有必要继续...

Last updated