docker 搭建 web 服务环境
docker容器虽然早就听说过,但是本人还真的没去用过,刚好看到相关的文章,就分享了下,有机会可以实践下......
做过开发的人对开发环境的安装、配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的。对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apache、Nginx)、一个数据库服务器(如 MySQL)和一个 PHP 解析器吧,如果你的 PHP 代码使用的一些扩展,那你还需要给你的 PHP 安装上这些扩展,那样你的 PHP 代码才能够顺利地跑起来。对于一个只想静静地敲代码的开发人员来说,开发环境的安装与配置这种事情,只要经历一次就已经很折腾人了。可是,事情往往不能按人们的意愿进行的,你保不准会重装下系统,也保不准会换一个新的环境。总之就是,你会偶尔需要重新安装配置你的的开发环境!
你可以回想一下,上一次安装配置你的开发环境花费了多少时间,你所需要的 PHP 扩展是不是到运行时报错了才记起来没安装的呢?还好,自从有了 Docker 之后,妈妈再也不用担心我的开发环境的问题了。使用 Docker ,开发环境只需要安装配置一次,之后搭建相同的开发环境很简单,只需要一条命令即可完成!
这就是本文的目的,介绍 Docker 下安装配置 Web 的服务环境,实现一次安装配置,多次重用、跨平台重用的功能。
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/nginx links:
- phpfpm ports:
- "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/mysql environment: MYSQL_ROOT_PASSWORD: qazasdedc123 ports:
- "3306:3306"phpfpm: image: index.alauda.cn/library/php:7.0-fpm links:
- mysql volumes:
- /Users/chenishr/www:/var/www/html ports:
- "9000:9000"
上面的文件内容很简单,它定义了三个容器,分别是 nginx、mysql 和 phpfpm 。每个容器定义里包含了一些信息,这里简单介绍一下。image:这个字段表示该容器是基于那个镜像来创建的
links:表示在该容器内部需要访问那个其它的容器,该名字在容器内部的表现类似于域名,它会绑 定对应容器的 IP
ports:将容器内部的端口映射到宿主机器中
volumes:配置容器与宿主机器的共享文件或者目录
一条命令
有了上面的 docker-compose.yml 文件之后,只需要一条命令即可启动所有的容器,也就是搭建好了整个 Web 服务环境了!
docker-compose up -d
最后
有了 Docker 之后,搭建环境从未有过如此简单。
本文只是介绍了 Docker 的最基本的应用而已,它还很多用途而不仅限于本文。它可以实现多种版本的软件并存同时工作,比如,我可以在一个电脑上同时使用 PHP7 和 PHP5 而不会造成混淆。当然,还有其它的 …
docker 搭建 web 服务环境的更多相关文章
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
- 使用Docker搭建Tomcat运行环境
1 准备宿主系统 准备一个 CentOS 7操作系统,具体要求如下: 必须是 64 位操作系统 建议内核在 3.8 以上 通过以下命令查看您的 CentOS 内核: # uname -r 2 安装Do ...
- Spring Cloud和Docker搭建微服务平台
用Spring Cloud和Docker搭建微服务平台 This blog series will introduce you to some of the foundational concepts ...
- 尝试利用CentOS环境安装LiteSpeed WEB服务环境的过程
对于普通的网站搭建的环境虚拟主机就足够使用,不过近期公司的网站需要上线VPS主机,于是采用到LNMP(http://lnmp.org/)一键包安装的,运行还是比较好的,这不最近我也开始尝试接触VPS方 ...
- 图文详解linux如何搭建lamp服务环境
企业网站建设必然离不开服务器运维,一个稳定高效的服务器环境是保证网站正常运行的重要前提.本文小编将会详细讲解Linux系统上如何搭建配置高效的lamp服务环境,并在lamp环境中搭建起企业自己的网站. ...
- Docker最全教程之使用Docker搭建Java开发环境(十七)
前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...
- python3.x +django + nginx + uwsgi 搭建web服务
最近一直在用django开发自己的网站.在开发和线上环境的对接过程中遇到了许多的坑.所以想以一个老鸟的经历来写一下怎么 搭建web服务 一.python3.x .django .nginx .uwsg ...
- 利用Docker搭建本地https环境的完整步骤
利用Docker搭建本地https环境的完整步骤 这篇文章主要给大家介绍了关于如何利用Docker搭建本地https环境的完整步骤,文中通过示例代码将实现的步骤介绍的非常详细,对大家的学习或者工作具有 ...
- 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)
前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后 ...
随机推荐
- Vue源码之目录结构
Vue版本:2.6.9 源码结构图 ├─ .circleci // 包含CircleCI持续集成/持续部署工具的配置文件 ├─ .github // 项目相关的说明文档,上面的说明文档就在此文件夹 ├ ...
- 走过的easyui的坑--datagrid的reload在IE下未刷新
至于为什么要进easyui这个坑,就不多说了. 我现在使用的是1.5这个版本,在用它做一个后台管理系统,项目做到一半,才想起记录这些坑. 1.对于datagrid在reload.load在IE下未刷新 ...
- The 19th Zhejiang University Programming Contest Sponsored by TuSimple (Mirror)
http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=391 A Thanks, TuSimple! Time ...
- python中logging模块的用法
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- Flagr 配置说明
说明文档来自官方文档 https://checkr.github.io/flagr/#/flagr_env 完整配置 包含了组件的配置参数以及说明,对于学习如何使用Flagr 还是很重要的,包含了数据 ...
- 超详细SQLMap使用攻略及技巧分享
sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限.它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数 ...
- Java面向对象和高级特性 项目实战(一)
一.项目简介 项目名:嗖嗖移动业务大厅 技能点: 二.技能点 三.系统概述 四.整体开发思路 五.实体类和接口开发 六. 创建工具类 七.使用集合存储数据 八.开发计划 九.代码实现 1.项目目录 2 ...
- windows攻击实验
实验目的:使用Metaspoit攻击MS08-067,提交正确得到远程Shell过程的截图(不少于5张) 靶机:192.168.11.231 攻击机:192.168.11.131 实验步骤: 1.首先 ...
- python基础知识7---补充
''' 不可变:数字,字符串,元组 可变:列表,字典 原子:数字,字符串 容器:列表,元组,字典 直接访问:数字 顺序:字符串,列表,元组 映射访问:字典 ''' #一一对应 a,b,c,d,e='h ...
- CSS3 Vendor-prefixing
Browser vendors needed a way to add support for new features that were not yet standardized, but wit ...