使用Docker搭建LNMP开发环境

1、什么是Docker
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
通俗来说,Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。
2、使用Docker的好处
在服务器环境中,由于现在的物理服务器的配置都是较为强大的,如果用物理服务器配置只跑一个小服务是非常浪费的,而跑多个服务,又会导致相互影响,导致安全等风险增加,故需要一个个的容器,把每一个服务隔离开来,让它们只使用自己那部分有限的资源以及自己依赖的软件包。在Docker出现之前,是靠虚拟机来实现的,但是每个虚拟机都要装自己的操作系统核心,这是对资源有点浪费。于是就有了Docker, 一个机器上可以装十几个到几十个docker,他们共享操作系统核心,占用资源少,启动速度快。
在开发环境中也带来了很多的方便,比如开发环境和生产环境的差异,依赖关系的管理等都变得简单了不少。
3、搭建流程
docker的安装请参阅官网,本机环境方面,给自己的笔记本和台式都安装了,系统分别是 ubuntu 16.04 和 windows10
1、mysql的安装与配置
1. 拉取镜像
docker pull mysql:5.7
完成后可以使用 docker images 查看拉取得镜像
2. 运行镜像来创建容器
docker run -d -p : -e MYSQL_ROOT_PASSWORD= --name db_mysql mysql:5.6
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-e 设置环境变量,这里是设置mysql的root用户的初始密码
–name 容器的名字
创建成功后可以使用 docker ps 查看运行中的容器。
3. 相关配置
docker exec -ti db_mysql /bin/bash
-t 在容器里生产一个伪终端
-i 对容器内的标准输入 (STDIN) 进行交互
进入到mysql容器后,可以对mysql创建一个可以远程访问的用户,然后就可以远程访问了。
2、php-fpm的安装与配置
1.拉取镜像
docker pull php:7.0-fpm
2.创建容器
#ubuntu
docker run -d -v /home/zoujiejun/workspace/www:/var/html/www -p : --link db_mysql:mysql --name php70_fpm
#windows
docker run -d -v /workspace:/var/html/www -p : --link db_mysql:mysql --name php70_fpm
-v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的
–link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。(如上述命令可以使用 mysql 来访问前面mysql容器)
如果是在windows系统,且是用virtualbox的安装方式,还需要在virtualbox的虚拟机设置中把共享文件夹的路径修改一下,从这里可以看出来,windows运行的是一个假docker- -就是一个linux虚拟机然后再跑docker。

3.配置
进入容器后,安装一个扩展。
docker-php-ext-install pdo-mysql
安装完成后使用 php -m 查看所有扩展。成功以后来搞nginx。
3、nginx的安装与配置
1.拉取镜像
docker pull nginx:1.12
2.创建容器
#ubuntu
docker run -d -v /home/zoujiejun/workspace/www:/var/html/www -p :--link php70_fpm:phpfpm--name z_nginx nginx:1.12
#windows
docker run -d -v /workspace:/var/html/www -p : --link php70_fpm:phpfpm --name z_nginx nginx:1.12
3.配置
由于nginx配置要打字比较多,先装一个vim把。
apt update
apt install vim
vim /etc/nginx/conf.d/default.conf

4、测试
<?php
try {
$con = new PDO('mysql:host=mysql;dbname=docker_test', 'zoujiejun', '123456');
$con->query('SET NAMES UTF8');
$res = $con->query('select * from key2value');
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
echo "key:{$row['key']} value:{$row['value']}";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
运行结果:

使用Docker搭建LNMP开发环境的更多相关文章
- Docker最全教程之使用Docker搭建Java开发环境(十七)
前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...
- 在windows环境里,用Docker搭建Redis开发环境(新书第一个章节)
大家都知道高并发分布式组件的重要性,而且如果要进大厂,这些技术不可或缺.但这些技术的学习难点在于,大多数项目里的分布式组件,都是搭建在Linux系统上,在自己的windows机器上很难搭建开发环境,如 ...
- 怎么使用Docker搭建PHP开发环境呢?
在Docker流行之前,要搭建开发环境通常有两种选择:一种是使用wamp.xampp.mamp等集成开发环境安装包,另外一种就是使用普通虚拟机来安装linux服务器,然后通过下载一键安装包(如:lnm ...
- Windows10系统下使用Docker搭建ClickHouse开发环境
前提 随着现在业务开展,几个业务系统的数据量开始急剧膨胀.之前使用了关系型数据库MySQL进行了一次数据仓库的建模,发现了数据量上来后,大量的JOIN操作在提高了云MySQL的配置后依然有点吃不消,加 ...
- docker 搭建php 开发环境 添加扩展redis、swoole、xdebug
docker-compose搭建lnmp 先决条件 首先需要安装docker 安装docker-compost 1.创建lnmp工作目录 #创建三个目录 mkdir lnmp && c ...
- Swoft 新手向教程 - 通过 Docker 搭建一个开发环境
本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 PHPer Swoft首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈组件化框架,内置协程网络服务器及常用的 ...
- Mac OS上搭建LNMP开发环境
1. 概述 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.c ...
- 使用docker搭建OpenResty开发环境
Dockerfile文件: FROM centos:latest RUN yum install -y pcre-devel openssl-devel gcc curl wget perl make ...
- 五分钟用Docker快速搭建Go开发环境
挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...
随机推荐
- Django中 media资源配置
# 用户上传的文件可以在外网通过接口直接访问 配置媒体跟路由: settings.py 用来存放用户上传的静态文件,可以对外公开的文件!!! MEDIA_ROOT = os.path.join(BAS ...
- 关于HttpSession 和 Hibernate框架中 session异同点的简单解析
快速理解: HttpSession中的session是一个容器用来盛基于会话机制的信息. 比喻:我把钱放进银行的保险柜里. 解析:我的钱就是我的信息,ID等 银行的保险柜就是session容器. Hi ...
- 从零开始 —— Canvas(一)
从零开始-Canvas 1.颜色.样式和阴影 属性 a.fillStyle(设置或返回用于填充绘画的颜色.渐变或模式) 语法:context.fillStyle = color(颜色值) | grad ...
- ANG通证是什么?有关ANG通证的干货都在这里
什么是ANG通证?▲▲▲ 通证也叫代币,是一个虚拟账户名称,是电子卡的虚拟货币.举个简单的例子,腾讯的Q币就是一种通证,我们用货币购换数个Q币,代以购买腾讯游戏里的装备等. 目前,随着加密数字通证的发 ...
- prerender-spa-plugin Vue预渲染配合meta-info优化seo
记录一下解决方案的过程 先安装prerender和puppeteer插件 这个国外大神写的 github地址就不附上了(百度有) cnpm install prerender-spa-plugin ...
- !/usr/bin/env python和!/usr/bin/python的区别
脚本语言第一行 作用:文件中代码用指定可执行程序运行 #!/usr/bin/Python 执行脚本时,调用/usr/bin下python解释器 #!/usr/bin/env python 在环境设 ...
- 设置tomcat支持软连接
一般开发时不会在tomcat安装目录/data/tomcat/webapps/ROOT 下去,上传部署:而是建立软连接,在tomcat安装目录之外操作,比如执行git pull拉取项目,而tomcat ...
- R语言的精度和时间效率比较(简单版)
R语言的最大数值 在R语言里面,所能计算的最大数值可以用下面的方法获得: ###R可计算最大数值 .Machine 在编程的时候注意不要超过这个数值.当然,普通情况下也不可能超过的. R语言的最大精度 ...
- Unity3d KeyCode 键盘各种键值详情
KeyCode :KeyCode是由Event.keyCode返回的.这些直接映射到键盘上的物理键. 值 对应键 Backspace 退格键 Delete Delete ...
- [Deep Learning] mini-batch
转自 http://hp.stuhome.net/index.php/2016/09/20/tensorflow_batch_minibatch/ 深度学习的优化算法,说白了就是梯度下降.每次的参数更 ...