docker的LNMP架构实战二

Posted liyuanshu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker的LNMP架构实战二相关的知识,希望对你有一定的参考价值。

本篇文章主要是描述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架构实战二的主要内容,如果未能解决你的问题,请参考以下文章

Docker--------docker-compose LNMP实战

使用Docker容器搭建LNMP架构

LNMP架构搭建Discuz论坛(实战!)

LNMP架构之Discuz论坛(实战!!)

LNMP架构应用实战——Nginx服务配置文件介绍

LNMP架构应用实战——Nginx服务配置文件介绍