Nginx+PHP+Mysql是比较常用的网站环境,使用docker布置网站环境也是比较常用的方式,以下就给大家介绍如果使用docker来搭建Nginx+PHP+Mysql的运行环境。
前提准备:macOs环境、docker环境(安装docker可以百度,对mac版本有要求)
首先拉取三个镜像:
docker pull mysql:5.7
docker pull php:fpm
docker pull nginx:latest
查看一下拉取的所有镜像:
首先我们安装msyql,然后安装php,这样可以将mysql和php连接起来,最后装nginx,nginx把php连接起来就好啦。
安装mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql_server mysql:5.7 # (这里是构建容器)
docker exec -it mysql_server /bin/bash # (进入容器,进入之后要对用户授权,允许用户远程访问)
mysql -u root -p 123456 # (进入mysql命令行模式)
GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '123456'; # (授权)
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456'; #(授权)
GRANT ALL PRIVILEGES ON *.* TO root@'127.0.0.1' IDENTIFIED BY '123456'; #(授权)
FLUSH PRIVILEGES; #(使权限生效)
可以使用Navicat工具查看mysql 首先要找到mysql的IP,如下命令
docker inspect mysql_server
至此,mysql就安装完成啦
安装PHP
~/Document/self_work 是我自己文件目录,大家可根据自己情况修改
docker run --name php_server -p 9000:9000 -v ~/Documents/self_work/wwwroot/:/var/www/wwwroot --link mysql_server:mysql -v ~/Documents/self_work/env/phpfile/:/usr/local/etc/php -d php:fpm # (这里是构建容器)
docker exec -it php_server /bin/bash # (登录容器)
docker-php-ext-install pdo_mysql #(安装php扩展,可以使用这种方式安装 安装方式很多,不一一赘述)
安装nginx
配置文件目录:~/Documents/self_work/env/nginx/conf/conf.d/ 注意conf.d 是个文件夹
docker run --name nginx_server -p 8181:80 -v ~/Documents/self_work/wwwroot:/var/wwwroot --link php_server:phpfpm -d nginx:latest #(构建容器,将nginx和php连接起来)
映射容器中的phpfpm和mysql都为固定,不能修改!
测试
在宿主机 ~/Documents/self_work/wwwroot/目录下修改 index.php 文件。
<?php echo phpinfo();
访问:http://localhost:8083/
测试mysql 链接
修改 index.php
<?php
//echo phpinfo();
$dbms='mysql'; //数据库类型
$host='your_mysql'; //数据库主机名,此处写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/>");
}
参考:https://cloud.tencent.com/developer/article/1444280
刷新页面 successful 我们安装成功啦啦啦啦啦
评论区