my-gitbook
Blog
  • 👨‍💻简介
  • 入门教程
    • markdown 入门教程
    • git 入门教程
      • 初识 git
        • 安装 git
        • 配置 git
      • 实战 git
        • 本地仓库
        • 版本管理
        • 回到过去
        • 基本概念
        • 版本控制
        • 撤销更改
        • 删除文件
        • 远程仓库
        • 分支管理
          • 分支总览
          • 冲突合并
          • 分支策略
          • 紧急修复
          • 变基合并
          • 协同开发
          • 本地和远程仓库的本质
        • 里程碑式标签
      • 私人定制
        • 忽略文件
        • 同步推送多Git仓库
      • 搭建私服
      • 扩展工具
        • git bash 常见命令
        • git bash 朋友圈
        • git bash 扩展tree命令
        • git bash 扩展命令(上)
        • git bash 扩展命令(中)
        • git bash 扩展命令(下)
        • git submodule 父子模块
      • 沙海拾贝
        • 知识速查
        • 备忘录[译]
    • github 入门教程
      • github 访问速度太慢
      • github 徽章从何而来
    • gitbook 入门教程
      • 准备阶段
        • 前置知识
        • 环境要求
      • 快速体验
        • gitbook-cli 命令行操作
        • gitbook-editor 编辑器操作
        • gitbook.com 官网操作
      • 高级进阶
        • 插件介绍
          • 实用插件
          • 主题插件
          • 开发插件
        • 导出电子书
        • 发布电子书
      • 公众号引流
      • 优化搜索
      • 常见问题
        • 热加载失败治标之法
        • 初始化默认折叠效果
      • 参考更多
  • 编程笔记
    • java 学习笔记
    • go 学习笔记
    • php 学习笔记
    • python 学习笔记
      • 入门教程
        • 00-ubuntu安装
        • 01-Linux基础
        • 操作系统的发展史(科普章节)
      • Django教程
        • Django 学习笔记
    • Linux 学习笔记
      • Linux基础
      • Linux全栈运维
  • 兴趣开发
    • 从零开始搭建服务器
      • 从登录服务器开始
      • 更加优雅地部署项目
      • 跟着官方体验 Docker
      • 快速尝鲜基于 Docker 部署项目
      • 利用阿里云 OSS部署静态网站
      • 免费实现https访问网站
      • webhook
    • 运维部署
      • docker 环境
      • docker 操作
      • docker compose
      • docker + nginx
      • docker + blog
      • docker + resume
      • docker + gitbook
      • docker + Bark
      • docker + py12306
      • docker + mojo-Weixin
      • docker + wechat-work-message-push-go
      • docker + email
      • docker + mysql
      • docker + springboot
      • docker + redis
      • docker + gogs
      • docker + gitlab
      • docker + gitea
      • docker + crawlab
    • 工具资源
      • 给 mac 装个 vmware 虚拟机
        • 给 mac 虚拟机装个 windows
        • 给 mac 虚拟机装个 centos
        • 给 mac 虚拟机装个 ubuntu
      • 给 windows 装个 vmware 虚拟机
        • 给 windows 虚拟机装个 mac
        • 给 windows 虚拟机装个 windows
        • 给 windows 虚拟机装个 centos
        • 给 windows 虚拟机装个 ubuntu
      • 公众号历史文章备份
        • Ryen
        • 苏生不惑
        • Python技术
      • 学会开发专属 chrome 插件
      • 攻克 12306 前端加密算法
    • 如何写作
      • markdown 和富文本
      • markdown 转富文本
      • csv 半手动数据统计
      • js 半手动数据统计
      • 简述优选文章统计
      • 快速上手Mermaid流程图
      • 常见问题
  • 读书观感
    • 大数据浪潮之巅:新技术商业制胜之道
  • 程序人生
    • 待完成清单
      • yarn快速入门
      • gulp快速入门
      • nvm快速入门
      • lodash快速入门
      • regexper快速入门
      • sublime快速入门
      • github 快速入门
      • svn 快速入门
      • java 快速入门
      • mysql 快速入门
      • maven 快速入门
      • tomcat 快速入门
      • gitignore 快速入门
      • android studio 快速入门
      • npm 快速入门
      • nginx 快速入门
    • 其他
      • 重装开发环境
      • 钉钉签到提醒
      • 倒计时提醒
      • 关注网站
      • 转型之路
      • 历史统计
      • 关于作者
      • 捐赠支持
由 GitBook 提供支持
在本页

这有帮助吗?

在GitHub上编辑
  1. 兴趣开发
  2. 从零开始搭建服务器

快速尝鲜基于 Docker 部署项目

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

web 服务器

无论是 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

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

上一页跟着官方体验 Docker下一页利用阿里云 OSS部署静态网站

最后更新于1年前

这有帮助吗?

Official build of Nginx :

zero2devops-docker-example-nginx-pull-preview.png
nginx