Docker搭建LNMP开发环境
导语:
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
1.Docker基本命令
-
docker info
使用docker info可以查看docker的基本信息,如版本号,镜像和容器数量等
-
docker search/pull
使用docker search从Docker Hub查找相关的镜像,然后通过docker pull可以将镜像拉取到本地宿主机中
-
docker images
使用docker images查看本地宿主机存在的镜像
-
docker run
通过镜像文件创建并运行一个容器,如:
docker run -d --name myNginx -p 8080:80 -v /var/www/html:/usr/share/nginx/html nginx
-
docker ps
查看正在运行的容器信息,docker ps -a可以查看所有容器(包括处于没有运行的容器)
-
docker inspect
命令docker inspect container_name可以获取容器的元数据,常用来查看容器的ip地址
2.Docker ubuntu多容器搭建LNMP环境
这个章节主要是使用docker在linux上搭建LNMP的开发环境,这里使用的是ubuntu 14.04虚拟机。 tip:安装虚拟机的时候,需要选择x64位的环境,经笔者测试docker不支持32位操作系统。
2.1拉取镜像文件
docker pull nginx php:5.6 mysql #拉取所需要的镜像
docker images #查看已有镜像
2.2构建容器
mkdir -p nginx/www nginx/conf #创建nginx目录用来挂载容器www和conf目录
创建容器并运行
cd nginx
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=xy123456 --name xy_mysql mysql #创建一个mysql容器并运行,-p将宿主机3307端口映射到容器的3306端口,-d宿主机以守护进程在后台运行
docker run -d -p 9000:9000 -v $PWD/www:/usr/share/nginx/html --name myphpfpm --link xy_mysql:mysql php:5.6-fpm #-v将当前宿主机挂载到容器的/usr/share/nginx/html目录 --link用于php-fpm和mysql容器之间的通信
docker run -d -p 8080:80 -v $PWD/www:/usr/share/nginx/html --name mynginx --link myphpfpm:phpfpm nginx #构建Nginx容器
配置nginx容器
docker exec -it mynginx /bin/bash #进入nginx修改配置
vi /etc/nginx/conf.d/default.conf
修改default.conf中的配置图如下:
location ~ \.php$ {
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
重启nginx服务并退出容器
service nginx restart
由于php-fpm没安装pdo扩展,安装相应扩展,先进入php容器
docker exec -it myphpfpm /bin/bash
cd /usr/bin
安装扩展
docker-php-ext-install pdo_mysql
退出后重启并查看容器状态
docker ps
2.3测试
如上图,可以看到mysql、php-fpm和nginx服务都起来了,接下来我们验证一下配置是否正确:
在www下新建index.php文件,输入<?php phpinfo();?>,保存退出,打开浏览器输入localhost:8080/index.php,
可以看到php信息,说明我们的php和nginx的服务都没问题,再验证mysql数据库的使用是否正常,修改index.php,
加入下面代码,然后再输入localhost:8080/index.php,回车,结果如图,lnmp开发环境就搭建完成啦.
数据库及表数据需自己创建
try {
$con = new PDO('mysql:host=mysql;dbname=test', 'root', 'xy123456');
$con->query('SET NAMES UTF8');
$res = $con->query('select * from test');
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
echo "id:{$row['id']} name:{$row['name']}";
}
} catch (PDOException $e) {
echo '错误原因:' . $e->getMessage();
}
3.Docker win7搭建PHP开发环境
这个章节主要是使用docker在win7 x64环境上搭建PHP+MYSQL开发环境,同样需要注意docker不支持win 32位的操作系统,所以32位要使用docker可参考上一章节在linux操作系统上搭建开发环境。
3.1 win7下搭建docker环境
-
win7安装docker有两个必要条件:
- 64位操作系统
- 支持虚拟化,并且,virtualization可用
-
win7安装docker具体步骤:
-
安装Docker Toolbox
进入Docker Toolbox的
下载页面
,安装包里面包含了git,Oracle虚拟机,docker client,docker ISO这几个软件,下载安装包直接安装即可,安装完成后,可以在桌面上看到以下三个图标:
点击DockerQuickStart打开终端docker就会自动配置,若顺利终端则会出现提示如下图,则docker配置成功:
-
xshell连接docker
win7下的docker终端使用起来很不友好,不能复制,粘贴等,这里建议使用类似xshell的远程连接工具进行连接docker环境,下载xshell之后,填写docker环境相关信息连接,默认的用户名密码是docker/tcuser。
-
安装时的小tips
这里说一下上面提到虚拟化的问题,虚拟化在BIOS下设置,具体如何进入BIOS请百度查看相关说明。这里以华硕为例,按F2进入BIOS,先将语言设置为简体中文,选择进入Advanced高级——CPU,找到Intel Virtualization Technology英特尔虚拟化技术 选项,设置为Enabled开启,再F10保存退出即可。 具体操作点击
华硕开启虚拟化
查看。
-
3.2 win7下用docker搭建PHP开发环境
-
首先用xshell连接docker后按
Docker ubuntu多容器搭建LNMP环境
中的步骤搭建好LNMP环境;这里挂载的时候,打开VirtualBox,如图配置挂载目录! -
这里写图片描述
如图挂载时就-v /f/docker:/usr/share/nginx/html这样就可以; -
测试
在f:/docker下新建一个index.php文件输入
4.参考文献
-
《Docker技术入门与实战》
-
基础篇到此结束啦,后面笔者会将整理的dockerfile篇和docker-composer篇写成博客发出来,想了解的朋友可以加我
QQ:1194271006