Docker安装php并进行nginx引用php

安装之前需要先安装myslq和nginx,

可以参考Docker安装mysql8.0-CSDN博客​​​​​​  和  Docker安装nginx-CSDN博客安装

一、下载php7.4镜像
#查询docker内是否有php镜像
docker search php
#下载php 7.4镜像
docker pull php:7.4-fpm
二、安装php7.4-fpm
#安装php-fpm
docker run -p 9000:9000 --name php -d php:7.4-fpm
#安装php-fpm并引用mysql
docker run -p 9000:9000 --name lnmp-php --link mysql8:mysql php:7.4-fpm
三、拷贝php容器文件到本地
#拷贝php配置文件到本地
docker cp php:/usr/local/etc/php /usr/local/src/docker/php/config
四、因用本地文件重新运行php容器
docker run -p 9000:9000 --name php \
-v /usr/local/src/docker/php/config:/usr/local/etc/php \       #引用本地配置文件
-v /usr/local/src/docker/nginx/html:/var/www/html \            #引用nginx html本地配置
-d php:7.4-fpm
#引用数据库容器
docker run -p 9000:9000 --name php \
-v /usr/local/src/docker/php/config:/usr/local/etc/php \       #引用本地配置文件
-v /usr/local/src/docker/nginx/html:/var/www/html \            #引用nginx html本地配置
--link mysql8:mysql
-d php:7.4-fpm


#引用php容器 正常不引用也可以使用
#卸载删除之前安装的nginx容器
docker rm -f nginx
#重新运行nginx容器并关联本地文件
docker run --name nginx -p 80:80  \
-e TZ=Asia/Shanghai \
-v /usr/local/src/docker/nginx/conf:/etc/nginx \
-v /usr/local/src/docker/nginx/html:/usr/share/nginx/html \
-v /usr/local/src/docker/nginx/logs:/var/log/nginx \
--link php:php
-d nginx
五、在nginx html文件下添加访问文件,并修改nginx default.conf配置文件
#添加phpinfo.php文件
vim /usr/local/src/docker/nginx/html/phpinfo.php
################phpinfo.php#################
<?php
echo phpinfo()
?>
############################################
#添加mysql-php.php文件 测试php链接mysql数据库
vim /usr/local/src/docekr/nginx/html/mysql-php.php
####################mysql-php.php#######################
<?php
	$conn = mysqli_connect("XXX.XXX.XXX.XXX", "root", "password", "dbname");
	if (!$conn) {
		die("连接失败: " . mysqli_connect_error());
	}

	$sql = "SELECT * FROM user_openid";
	$result = mysqli_query($conn, $sql);

	$data = array();
	while ($row = mysqli_fetch_assoc($result)) {
		$data[] = $row;
	}
	$json = json_encode($data);

	header('Content-Type: application/json');
	echo $json;

	mysqli_close($conn);
?>
###########################################################
创建pdo.php  测试mysql数据库连接,支持多重数据库测试
vim /usr/local/src/docekr/nginx/html/pdo.php
#####################################################
<?php
	$servername = "XXX.XXX.XXX.XXX";
	$username = "root";
	$password = "password";
	$dbname = "dbname";
	try {
		$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
		$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
		$sql = 'SELECT * FROM user_openid;';
		$stmt = $conn->query($sql);
		$res = $stmt->fetchAll(PDO::FETCH_ASSOC);

		header('Content-Type: application/json');
		echo json_encode($res);
	} catch(PDOException $e) {
		echo "连接失败: " . $e->getMessage();
	}
?>
############################################################



#重新运行nginx并引用php
#获取php的IP地址
docker inspect php | grep IPAddress | tail -n 1 | awk -F ':' '{print $2}'| awk -F '"' '{print $2}'
#配置nginx /usr/local/src/docker/nginx/conf/conf.d/default.conf 文件
vim /usr/local/src/docker/nginx/conf/conf.d/default.conf
##############default.conf 原来的php引用代码是注释的需要解注释####################
location ~ \.php$ {
        root           html;
        fastcgi_pass   172.17.0.2:9000;        #php的容器IP:端口号
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;  #/var/www/html php容器内部的html文件所在位置
        include        fastcgi_params;
   }
#############################################################################

六、重新运行nginx,并引用php
#删除原来的nginx容器
docker rm -f nginx
#重新运行nginx容器并关联本地文件,并引用php容器
docker run --name nginx -p 80:80  \
-e TZ=Asia/Shanghai \
-v /usr/local/src/docker/nginx/conf:/etc/nginx \
-v /usr/local/src/docker/nginx/html:/usr/share/nginx/html \
-v /usr/local/src/docker/nginx/logs:/var/log/nginx \
--link php:php
-d nginx-php
七、验证

1、php+mysql是否配置成功

http://IP/mysql-php.php

2、nginx+php是否安装配置成功

http://IP:80/phpinfo.php

因为是80端口所以也可以

http://IP/phpinfo.php
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值