zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    10.23继承
    10.22语法 class 类 面向对象概念 类与对象 对象的使用 绑定方法
    10.18
    10.16
    读书笔记-软技能:代码之外的生存指南
    git reset
    阿里云安装samba
    关于svn由于目标计算机积极拒绝,无法连接的解决办法
    yii2简单安装
    指定路径创建中文文件名并存入内容
  • 原文地址:https://www.cnblogs.com/liyuanshu/p/13273626.html
Copyright © 2011-2022 走看看