老是搭环境也太烦了,最近有接触到docker,在此记录一下利用docker搭建lnmp环境的步骤
docker的安装很简单,网上教程很多,不赘述

运行环境:centos7

docker版本
在这里插入图片描述

docker官网:https://hub.docker.com/

在家目录创建两个目录,一个是 nginx/conf.d(用于nginx的配置文件),一个是nginx/www(用于网站相关文件)

在这里插入图片描述

php-fpm安装
1. 拉取php镜像
docker pull php:7.4-fpm
2. 创建php容器
docker run --name php-fpm -v ~/nginx/www:/www -d php:7.4-fpm

注 -v ~/nginx/www:/www 表示建立 ~/nginx/www目录与 容器中/www的存储卷映射
-d表示后台运行
在这里插入图片描述

nginx安装
1. 拉取nginx镜像

docker pull nginx

在这里插入图片描述

2. 创建nginx容器
docker run --name nginx -p 8083:80 -d \
    -v ~/nginx/www:/usr/share/nginx/html:ro \
    -v ~/nginx/conf.d:/etc/nginx/conf.d:ro \
    --link php-fpm:php \
    nginx

注: 建立 ~/nginx/www 与容器 /usr/share/nginx/html的映射 ro表示readonly --link php-fpm 表示建立nginx容器与php-fpm的联系
-p 8083:80 表示建立nginx容器80端口与宿主容器8083容器的映射
在这里插入图片描述
进入nginx容器可看到nginx容器与php容器有联系通道
在这里插入图片描述

3. 修改nginx的配置文件

在~/nginx/conf.d目录下添加 myweb.conf, 内容如下:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   php-fpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}
4.重启nginx容器

docker restart nginx

5.测试nginx与php环境是否搭建成功

在 ~/nginx/www/下新建index.php,内容如下:

<?php
phpinfo();
?>

浏览器访问:www.nginx.com:8083/index.php ,本人已经在host文件中配置www.nginx.com指向虚拟机ip地址
在这里插入图片描述
祝贺你,到此nginx+php就算搞定了!!!下面进行mysql的安装

mysql安装
1.拉取mysql镜像
docker pull mysql:latest
2.创建mysql容器
docker run -p 3306:3306 --name mysql -v ~/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d --link php-fpm mysql

在这里插入图片描述

3.安装phpmyadmin
docker run --name myadmin -d --link mysql:db -p 8082:80 phpmyadmin/phpmyadmin

成功:
在这里插入图片描述

测试php是否能连接数据库
首先进入php容器中,打开pdo_mysql扩展

docker-php-ext-install pdo_mysql

然后建立脚本,连接数据库:

<?php
$pdo = new PDO("mysql:host=你服务器的地址;port=3306;dbname=test", 'root', '123456');
$sql = 'select * from people';
$res = $pdo->query($sql);
while(($row = $res->fetch(PDO::FETCH_ASSOC)) !== false) {
	var_dump($row);
}
?>

请求脚本文件:
在这里插入图片描述
》》》 以上!!!!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐