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