雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

使用docker搭建Nginx + PHP + mysql环境

2024-08-26 24

Nginx+PHP+Mysql是比较常用的网站环境,使用docker布置网站环境也是比较常用的方式,以下就给大家介绍如果使用docker来搭建Nginx+PHP+Mysql的运行环境。

前提准备:macOs环境、docker环境(安装docker可以百度,对mac版本有要求)
image-1657631848682
首先拉取三个镜像:

docker pull mysql:5.7
docker pull php:fpm
docker pull nginx:latest

查看一下拉取的所有镜像:
image-1657631910200
首先我们安装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/
image-1657633645310
测试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 successfulbr/;
   //你还可以进行一次搜索操作
    // 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 我们安装成功啦啦啦啦啦

更新于:21天前
赞一波!3

文章评论

全部评论