做过开发的人对开发环境的安装、配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的。对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apache、Nginx)、一个数据库服务器(如 MySQL)和一个 PHP 解析器吧,如果你的 PHP 代码使用的一些扩展,那你还需要给你的 PHP 安装上这些扩展,那样你的 PHP 代码才能够顺利地跑起来。对于一个只想静静地敲代码的开发人员来说,开发环境的安装与配置这种事情,只要经历一次就已经很折腾人了。可是,事情往往不能按人们的意愿进行的,你保不准会重装下系统,也保不准会换一个新的环境。总之就是,你会偶尔需要重新安装配置你的的开发环境!

你可以回想一下,上一次安装配置你的开发环境花费了多少时间,你所需要的 PHP 扩展是不是到运行时报错了才记起来没安装的呢?还好,自从有了 Docker 之后,妈妈再也不用担心我的开发环境的问题了。使用 Docker ,开发环境只需要安装配置一次,之后搭建相同的开发环境很简单,只需要一条命令即可完成!

这就是本文的目的,介绍 Docker 下安装配置 Web 的服务环境,实现一次安装配置,多次重用、跨平台重用的功能。关于部署并使用Docker的教程,可以参考这篇文档帮助。

Docker 概述

Docker 是什么?可以将 Docker 理解为打包环境的容器,它可以将环境打包成镜像,在需要的时候,再基于该镜像来创建容器,这样所需要的环境就回来了。刚刚提到了 Docker 的两大核心概念,镜像和容器。

Docker镜像是为了满足特殊用途而按照Docker的规则制作的应用,有点儿类似于Win-dows里面的安装软件包。容器都是基于镜像而创建的,基于一个镜像可以创建若干个名字不同但功能相同的容器。镜像是静态的,容器是动态的。

除了镜像和容器之外,还有两个概念需要了解一下的,那就是仓库和 docker-compose。Docker 仓库是存放镜像的地方,我们可以从 Docker 仓库中拉取镜像到本地,然后再基于镜像创建容器。docker-compose 是管理容器的。Docker 的思想是一个容器只做一件事情,一个开发环境中可能会使用到多个容器,比如 Web 服务环境会使用到 PHP 、Nginx、MySQL 等等。那么一个 Web 服务环境就需要有三个容器,并且这些容器之间是存在依赖关系的,Nginx 依赖 PHP,PHP 依赖 MySQL。有了 docker-compose 就可以很好地管理这些容器了,它可以根据容器之间的依赖关系来决定每个容器的启动顺序和关闭顺序,可以管理各容器与宿主机器之间的端口映射关系,也可以配置容器与宿主机器之间的数据共享策略等等。

国内的镜像仓库

由于地理位置的原因,国内访问 Docker 的官方仓库是比较慢的,所以在这里介绍一个国内的 Docker 仓库:灵雀云。灵雀云镜像仓库中汇集了大量来自社区的优质作品,让用户组合、复用容器化微服务,轻松搭建新一代云端应用。

搭建 Web 服务环境

本文的重点是使用 Docker 搭建一套 Web 服务环境,如果在你的环境中还没有安装 Docker,可以参考这里自行安装。

安装了 Docker 之后,搭建 Web 服务环境就很简单了,只需要一个文件,一条命令即可!

一个文件: docker-compose.yml

nginx:image: index.alauda.cn/library/nginxlinks:- phpfpmports:- "80:80"- "443:443"volumes:- /Users/chenishr/www:/usr/share/nginx/html- ./nginx.conf:/etc/nginx/nginx.conf- ./nginx.d:/etc/nginx/conf.dmysql:image: index.alauda.cn/library/mysqlenvironment:MYSQL_ROOT_PASSWORD: qazasdedc123ports:- "3306:3306"phpfpm:image: index.alauda.cn/library/php:7.0-fpmlinks:- mysqlvolumes:- /Users/chenishr/www:/var/www/htmlports:- "9000:9000"

上面的文件内容很简单,它定义了三个容器,分别是 nginx、mysql 和 phpfpm 。每个容器定义里包含了一些信息,这里简单介绍一下。
image:这个字段表示该容器是基于那个镜像来创建的
links:表示在该容器内部需要访问那个其它的容器,该名字在容器内部的表现类似于域名,它会绑 定对应容器的 IP
ports:将容器内部的端口映射到宿主机器中
volumes:配置容器与宿主机器的共享文件或者目录

一条命令

有了上面的 docker-compose.yml 文件之后,只需要一条命令即可启动所有的容器,也就是搭建好了整个 Web 服务环境了!

docker-compose up -d

最后

有了 Docker 之后,搭建环境从未有过如此简单。

本文只是介绍了 Docker 的最基本的应用而已,它还很多用途而不仅限于本文。它可以实现多种版本的软件并存同时工作,比如,我可以在一个电脑上同时使用 PHP7 和 PHP5 而不会造成混淆。当然,还有其它的。

关于各种网站类型及环境的搭建方式,可以参考这篇文档帮助教程。

新手如何使用docker搭建web服务环境相关推荐

  1. 使用 docker 搭建 web 服务环境

    本文目的 做过开发的人对开发环境的安装.配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的.对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apac ...

  2. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  3. 用Spring Cloud和Docker搭建微服务平台

    This blog series will introduce you to some of the foundational concepts of building a microservice- ...

  4. 使用 Docker 搭建 Laravel 本地环境

    (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 ...

  5. CentOS7安装wdCP面板,快速搭建web运行环境(图文详解)

    文章目录 1. wdCP简介 2. 安装过程 2.1 源码安装 2.1.1 ssh登录服务器 2.1.2 源码的下载.解压.安装 2.1.3 软件安装目录 2.2 进入后台管理 3.wdCP面板的卸载 ...

  6. docker+selenium web自动化测试环境的部署

    docker+selenium web自动化测试环境的部署 1.使用SecureCRT或Docker Quickstart Terminal打开docker终端. 2.下载selemiunUI测试需要 ...

  7. Docker最全教程之使用Docker搭建Java开发环境(十八)

    前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...

  8. Docker最全教程之使用Docker搭建Java开发环境

    前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. Java [Jav ...

  9. 分别安装搭建lamp服务环境

    一. 分别安装搭建lamp服务环境 准备工作: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state –state NE ...

最新文章

  1. dedecms模板中首页实现分页的方法
  2. consul配置参数大全、详解、总结
  3. javascript使用btoa和atob来进行Base64转码和解码
  4. Eclipse对类固醇的重构
  5. 厦门大学c语言模拟考试题,厦门大学《C语言》模拟试卷(10级).doc
  6. linux arm交叉编译ko,Ubuntu嵌入式交叉编译环境arm-linux-gcc
  7. 全国370城市空间权重矩阵及计算方法、城市点坐标、城市道路网、城市poi感兴趣点
  8. 如何配置ASP运行环境
  9. 【实战好项目】2021“觅影”医学人工智能算法大赛-5个赛道任你选
  10. c语言SPF算法代码,SPF 算法具体过程
  11. Excel中两个sheet页比较不同值
  12. Opencv根据USB摄像头PID\VID号,获取对应摄像头索引
  13. canvas清除画布
  14. CENTOS 7 静默安装 ORACLE 19C
  15. 深度学习小白如何看懂神经网络模型/图?
  16. windows7环境下theano安装
  17. 基于GIO/FVID的DSP视频驱动程序
  18. C语言经典例题--打印前五十个素数
  19. 服务器防病毒——MCK(云私钥)
  20. 硅烷偶联纳米SiO2改性形状记忆聚氨酯/抗体偶联的介孔二氧化硅/米非司酮纳米制剂/纳米二氧化硅接枝黄麻纤维可降解复合物

热门文章

  1. NLP 自然语言分析理解
  2. 基于Spring Boot 的Blog开发(一)
  3. javascript绘制静态或者动态的图表、关系表、流程图-JointJS
  4. 谷歌有情怀!谷歌开放大规模音频数据集 AudioSet
  5. Word2Vec算法详解(相关背景介绍)
  6. 反序列化对象列表发生异常_面试官:你知道Java对象的序列化与反序列化背后的原理吗?...
  7. sar偏移量追踪技术_SAR指标配合阶段高低价的量化交易策略
  8. Nhibernate学习的第一天
  9. nyoj8-一种排序
  10. Vue.js(2.x)之插值