Ubuntu運行docker,連接mysql


一、搭建項目環境

1.在Ubuntu中安裝Docker

更新ubuntu的apt源索引

sudo apt-get update

安裝包允許apt通過HTTPS使用倉庫

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

添加Docker官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

設置Docker穩定版倉庫

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

添加倉庫后,更新apt源索引

sudo apt-get update

安裝最新版Docker CE(社區版)

sudo apt-get install docker-ce

檢查Docker CE是否安裝正確

sudo docker run hello-world

出現如下信息,表示安裝成功

為了避免每次命令都輸入sudo,可以設置用戶權限,注意執行后須注銷重新登錄

sudo usermod -a -G docker $USER

啟動docker

sudo service docker start

 

2.安裝Docker-compose

1.進入https://github.com/docker/compose/releases 查看最新版本,當前版本為1.23.1

sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

 

2.設置權限

sudo chmod +x /usr/local/bin/docker-compose

 

3.查看是否安裝成功

docker-compose --version

 如果報 [12147] Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg  應該是包沒下載完整,1、2、3步驟再來一遍。

3.下載后台鏡像

http://git.internal.taqu.cn/dev-tools/docker

將鏡像放進ubuntu系統中,解壓到docker目錄下 ,就會產生下面5個文件(長方形中)

cd ~/docker/

 

4.運行sh腳本,提取鏡像文件

bash make_xy.sh XXX 8888 ~/touch_code/bbs ~/logs

XXX就是你的項目名 我的是項目名是grow_score

bash make_xy.sh grow_score 8888 ~/touch_code/bbs ~/logs

就會自動生成圖上剩余文件夾

 

進入你建立的項目,修改yaml文件中的路徑

 

 

      - /home/liugang/touch_code/grow_score:/data/html/grow_score
      - /home/liugang/touch_code/xyframework:/data/html/xyframework
      - /home/liugang/logs/php-fpm:/data/logs/php-fpm
      - /home/liugang/logs/sfpm:/data/logs/sfpm
      - /home/liugang/logs/scli:/data/logs/scli

 

關閉Nginx中的數據加密,在www.conf中添加 gzip off;

 

 

 

 

 

打開控制台,執行框架

sudo make run

 

makefile文件中有項目執行指令 

sudo make stop停止項目等等

5.git拉取xy框架和項目空框架

項目空框架:http://git.internal.taqu.cn/common/privilege/tree/branch_52week_191224

xy框架:http://git.internal.taqu.cn/framework/xy

 

將兩個框架內部文件分別對應文件名放置到 ~ 文件夾中的touch_code中

 

 

 

 

 

 此時會生成如下兩圖

 

 

 

 

 

 包名就是項目名要,跟yaml配置一致

1代表版本v1

config是配置文件

service是代碼放置的地方

 

 

 

<?php

class GrowScoreService extends BaseService
{
    public function getLevel(){
        return '1';
    }
}
GrowScoreService

 

6.更改ms中網管配置

ifconfig

查看虛擬機ip

    {
      "addrs": [{
      "url": "http://10.10.30.161:8888/",
      "env": 0,
      "protocol": "json",
      "stop": false
      }],
      "type": "php",
      "name": "grow_score"
    }

7.前端調用

SoaClient.getSoa(‘grow_score’, 'v1/growScore').getLevel()
grow_score項目名  v1版本號   growScore 代碼GrowScoreService  getLevel()方法。 
 

網址直接調用 :host:port/v1/Soa/jService?service=xxx&method=xxx&form=xxx

  • form是soa的參數的base64
     
  • soa參數是json數組的格式
     
  • 比如add(1,2) 參數是[1,2]

http://10.10.30.161:8888/v1/Soa/jService?service=growScore&method=getLevel

 

PS:注意php文件名大小寫要和路徑一致

 

二、連接數據庫

1.安裝mysql

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

安裝成功后可以通過下面的命令測試是否安裝成功:

sudo netstat -tap | grep mysql

現在設置mysql允許遠程訪問,首先編輯文件/etc/mysql/mysql.conf.d/mysqld.cnf:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

注釋掉bind-address = 127.0.0.1

保存退出,然后進入mysql服務,執行授權命令:

進入數據庫,默認密碼123456

mysql -uroot -p

 

grant all on *.* to root@'%' identified by '你的密碼' with grant option;

  

flush privileges;

  

然后執行quit命令退出mysql服務,執行如下命令重啟mysql:

service mysql restart

 

這樣,我們的數據庫就可以被遠程連接了。

2.修改php.ini

sudo docker ps

  找到docker中運行的php

 

1d778593e84d = xxxxxxxx

docker exec -it xxxxxxxxxx /bin/bash

  

cd app/program/php-7.1.8/conf/

  

 

 修改php.ini中的default.socket

查詢default.socket相當於Ctrl+F,按N下一行

 

/default.socket

 

pdo_mysql.default.socket =/var/run/mysqld/mysqld.sock

mysqli.default_socket =/var/run/mysqld/mysqld.sock

 

 

 

將擴展打開 去掉這5個前邊的分號

 

 

 

 

保存退出。

 

在數據庫中運行這兩個即可連接數據庫

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

  

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

 

連接數據庫代碼:

 

 

<?php
//連接數據庫
class MysqlConectService
{
    public function connect(){

// $serverName = '10.10.30.161';
// $databaseName = 'test';
// $serverPort = '3306';

// $username = 'root';
// $password = '123456';

//if (class_exists('PDO')) {
//   echo "pdo";

//    try {
//        $conn = new PDO("mysql:host=" . $serverName . ";dbname=" . $databaseName . ";port=" . $serverPort, $username, $password);
//    if ($conn->connect_error) {
//            return 'error';
//        }else{
//           return 'success';
//        }
//    } catch (PDOException $e) {
//        echo 'Connection failed: ' . $e->getMessage();
//    }
//}
    $db            = db();
        $db->tableName = 'levelconfig';
    $where['level_id'] = 1;
        return  $db->find($where);
    }
}
MysqlConectService


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM