Linux环境下通过docker搭建PHP的LAMP开发环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21891743/article/details/83009870

想必作为一个Web开发的程序员,近些年对docker一定不会陌生,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。使用docker主要有以下好处:
1. docker容器之间相互独立,可以在一个服务器上面搭建多套环境
2. docker容器内有已经部署好的软件安装环境,搭建集成环境相当方便
本文就按照docker标准,搭建一个基于LAMP架构的PHP运行环境(MySQL、Nginx、PHP_FPM)

安装docker


1. 安装docker,使用如下命令。

yum install docker

2. 查看docker版本,如果出现这个界面说明安装成功。

3. 设置docker加速镜像源,通过vim /etc/docker/darmon.json设置如下内容。

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

docker安装MySQL


1. 从docker镜像库中拉取一个MySQL的镜像到服务器。

docker pull mysql:5.6

2. 然后输入命令 docker images 就可以查看查看我们刚刚拉下来的mysql的镜像。

3. 运行并启动一个容器,通过以下命令。

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456abc --name mysql_1 mysql:5.6

参数说明 

-d 让容器在后台运行 

-p 添加主机到容器的端口映射 

3306:3306 把容器内的3306端口映射到主机的3306端口,前面是主机的端口,后面是容器端口

-e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置 

-MYSQL_ROOT_PASSWORD 设置访问MySQL的密码为123456abc

–name 容器的名字,随便取,但是必须唯一

4. 接下来我们就可以通过命令docker ps -a 查看我们刚刚创建的容器。

这里我们可以看到我的容器状态的Up状态,表示容器正在运行,并且把可以看到主机和容器的端口映射关系,如果容器启动情况不正确,可以查看日志,通过以下命令命令。

docker logs -f -t --since="2018-09-20" --tail=10 mysql_1

接下来,如果我们想进入刚刚创建的容器中,输入如下命令。

docker exec -ti mysql_1 /bin/bash1

参数说明 :

-t 在容器里生产一个伪终端

-i 对容器内的标准输入 (STDIN) 进行交互

容器中默认是没有vim的,所以我们首先要安装vim,需要注意的是安装前记得先执行apt update命令,不然安装会出现问题。

进入到mysql容器后,我们通过创建一个远程可以访问的用户,这样我们就能从别的主机访问到我们的数据库了。

docker安装PHP-FPM 


1. 拉取php-fpm的镜像。

docker pull php:7.0-fpm

2. 再创建一个php-fpm容器,开启端口为9000,同时与上面安装的mysql进行连接,才能够协同工作。

docker run -d -v /var/nginx/www/html:/usr/share/nginx/html -p 9000:9000 --link mysql_1
:mysql --name abc_phpfpm php:7.0-fpm

参数说明:
-d 让容器在后台运行 
-p 添加主机到容器的端口映射 
-v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的 
–name 容器的名字 
–link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。

备注:这里如果不指定–link参数其实也是可以得,因为容易本身也是有ip的且唯一,所以我们也可以直接利用ip去访问容器。

 docker安装nginx 


1. 首先,从仓库里去拉取一个nginx镜像。

docker pull ngixn:1.10.3

2. 接下来运行nginx容器。

docker run -d -p 80:80 -p 443:443 --name nginx_1  -v /var/nginx/www/html:/usr/share/nginx/html --link phpfpm_1:phpfpm --name nginx_1 nginx:1.10.3

3. 配置nginx配置文件default.conf,在配置文件中增加以下行。

location ~ .+\.php($|/) {
       set $script $uri;
       set $path_info "";
       if ($uri ~ "^(.+\.php)(/.+)") {
           set $script $1;
           set $path_info $2;
       }
       #fastcgi_pass    unix:/run/php/php7.0-fpm.sock;
       root           /usr/share/nginx/html;
       fastcgi_pass   phpfpm:9000;
       fastcgi_index    index.php?IF_REWRITE=1;
       fastcgi_param    PATH_INFO    $path_info;
       #fastcgi_param    SCRIPT_FILENAME    $root$fastcgi_script_name;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       fastcgi_param    SCRIPT_NAME    $script;
       include        fastcgi_params;
}

猜你喜欢

转载自blog.csdn.net/qq_21891743/article/details/83009870