1. 程式人生 > >docker安裝nginx+mysql+php

docker安裝nginx+mysql+php

1、首先安裝docker

下載docker的阿里映象源:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安裝docker所需的依賴包:

yum -y install yum-utils device-mapper-persistent-data lvm2 container-selinux

新增docker的阿里源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安裝docker

yum -y install docker-ce

啟動docker

systemctl restart docker

2、安裝docker阿里雲加速器

登入自己的阿里雲賬號進入一下頁面即可複製專屬加速器地址

https://cr.console.aliyun.com/#/accelerator

配置加速器

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {  "registry-mirrors": ["https://756fdy0k.mirror.aliyuncs.com"]

   #此為加速器地址,每個人不同 } EOF sudo systemctl daemon-reload sudo systemctl restart docker

3、拉取所需映象

docker pull nginx:latest

docker pull mysql:8

docker pull bitnami/php-fpm

微信截圖_20181017202056.png

4、建立資料夾

mkdir -pv /docker/www    #網站根目錄

mkdir -pv /docker/nginx/conf.d/       #nginx配置檔案

mkdir -pv /docker/mysql     #資料庫資料夾

5、構建mysql容器

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /docker/mysql:/var/lib/mysql --name mysql8 mysql:8

連入容器中

docker exec -it mysql8 bash

2.png

登入資料庫重置密碼:

mysql -uroot -p123456

use mysql

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

alter  user 'root'@'%' identified by '123456';

FLUSH PRIVILEGES;

3.png

在宿主機上測試是否能夠連入資料庫

檢視資料庫容器IP地址:

docker inspect mysql8 --format='{{.NetworkSettings.IPAddress}}'

4.png

mysql -h 172.17.0.2 -uroot -p123456

5.png

資料庫配置完成

6、構建nginx容器

docker run -p 80:80 --name mynginx \

 -v /docker/www:/usr/share/nginx/html \

 -v /docker/nginx/conf.d:/etc/nginx/conf.d \

 --privileged=true \

 -d nginx

6.png

7、構建php容器

docker run -p 9000:9000 --name myphp -v /docker/www:/var/www/html\

-d bitnami/php-fpm:latest

8、配置nginx代理

首先檢視php容器的IP地址

docker inspect myphp --format='{{.NetworkSettings.IPAddress}}'

7.png

配置nginx代理

vim /docker/nginx/conf.d/default.conf

server {

  listen  80 default_server;

  server_name _;

  root   /usr/share/nginx/html;

  location / {

   index index.html index.htm index.php;

   autoindex off;

  }

  location ~ \.php(.*)$ {

   root   /var/www/html/;

   fastcgi_pass 172.17.0.4:9000;   #php容器的IP地址

   fastcgi_index index.php;

   fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;

   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

   fastcgi_param PATH_INFO $fastcgi_path_info;

   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

   include  fastcgi_params;

  }

}

9、配置phpinfo頁面

echo "<?php phpinfo();" > /docker/www/info.php

訪問nginx頁面看看

curl localhost/info.php

8.png

10、配置php連線資料庫

vim /docker/www/test.php

 <?php

 $dbms='mysql';     //資料庫型別

 $host='mysql8'; //資料庫主機名,此處寫mysql 容器的名字

 $dbport = '3306';

 $dbName='mysql';    //使用的資料庫

 $user='root';      //資料庫連線使用者名稱

 $pass='123456';          //對應的密碼

 $dsn="$dbms:host=$host;port=$dbport;dbname=$dbName";

 try {

    $dbh = new PDO($dsn, $user, $pass); //初始化一個PDO物件

    echo "successful!<br/>";

   //你還可以進行一次搜尋操作

    // foreach ($dbh->query('SELECT * from user') as $row) {

    //     print_r($row); //你可以用 echo($GLOBAL); 來看到這些值

    // }

    

    $dbh = null;

 } catch (PDOException $e) {

    die ("Error!: " . $e->getMessage() . "<br/>");

 }

11、測試是否連線資料庫成功

curl localhost/test.php

9.png