码迷,mamicode.com
首页 > 其他好文 > 详细

docker的LNMP架构实战二

时间:2020-07-09 15:18:53      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:host   name   href   arch   编写   代码   into   选择   idt   

本篇文章主要是描述docker中对Mysql的操作,同时学习容器之间的通信问题,目前架构情况如下:

技术图片

 

 

 1、数据库连接使用

在docker中启动Mysql服务后,可以使用两种方法对Mysql进行操作(连接Mysql数据库需要的是IP和端口):

##使用Mysql容器里的ip连接数据库(该方法的前提是连接前必须确定能够ping通容器IP地址):

###使用该方法可在容器

root@test:~# mysql -h172.17.0.2 -uroot -p123456

##使用宿主机的IP连接数据库

root@test:~# mysql -h192.168.44.128 -uroot -p123456

注:实际项目中应该根据自己的需求进行选择,理论上整改项目使用容器架构的话,利用容器内部的ip进行容器间的通讯,可以减少路由数量,速度更快。

进入数据库后,创建相应的数据库,用于php代码写入数据:

mysql> create database class;

mysql> use class;

mysql> create table product(pid int primary key auto_increment, name varchar(60) not null,url varchar(60),pLike tinyint);

技术图片

 

 

 

2、PHP与Mysql交互

在nginx的访问目录下编写好php代码,用于测试能否对数据库进行写入功能功能:

##首页展示代码,root@test:/var/www/html# cat mysql.php :

###经测试之间把IP改为192.168.44.128同样可连接数据库:

 

<?php
$servername = "172.17.0.2";
$username = "root";
$password = "123456";
$db="class";
try {
$conn = new PDO("mysql:host=$servername;dbname=$db", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->beginTransaction();
$conn->exec("INSERT INTO product (name, url, pLike) 
	    VALUES (‘John‘, ‘Doe‘, 1)");
$conn->commit();
echo "新记录插入成功";
}
catch(PDOException $e)
{
	    // 如果执行失败回滚
     $conn->rollback();
     echo $sql . "<br>" . $e->getMessage();
 }          
$conn = null;
?>

 

 

 

 

注:需要注意每个组件的版本问题,本次使用的是PHP7.1版本,在函数使用方面,若连接数据库中的mysqlLi函数已经废除,因此报错:

技术图片

 

 

 

3、功能展示:

技术图片

技术图片

 

 

 

 

 

 

参考文章:https://blog.csdn.net/sxudong2010/article/details/83277285

                  https://www.runoob.com/php/php-mysql-connect.html

 

 

 

docker的LNMP架构实战二

标签:host   name   href   arch   编写   代码   into   选择   idt   

原文地址:https://www.cnblogs.com/liyuanshu/p/13273626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!