首页 程序笔记 使用docker搭建Nginx + PHP + mysql环境

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

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 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 我们安装成功啦啦啦啦啦

5

站心网

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

为您推荐

服务器安装数据库MySQL8.0版本,打包导入到MySQL5.6失败的结局方式

最近数据库升级为mysql8.0,在使用过程中发现一些问题,首先mysql8.0有很多新特性,对服务器配置要求较高,所有就考虑把数据库版本切换到MySQL5.6,经过多出测试处理发现在8.0数据库打包的数据导入到5.6总是报错,或..

MySQL查询建表规范

因为之前一直再查找一些比较好的数据库规范,以方便在开发时连接 MySQL 进行查询/建表的时候,能根据规范来执行,达到提高 查询速度 / 执行 SQL 的性能 和提升 MySQL 的整体性能, 这里主要是存放一些比较好的一些数..

宝塔Nginx服务器User-Agent过滤器

这些正则表达式规则主要用于Web服务器或安全系统(如WAF)的User-Agent过滤,旨在识别并拦截自动化工具、恶意爬虫、漏洞扫描器等非人类流量,从而提升网站安全性和资源保护。以下是分点总结:‌核心作用‌‌安全防护..

宝塔Nginx配置图片404处理方法

在宝塔面板中配置Nginx,使其在访问图片不存在时显示指定内容或返回自定义404页面,可以通过以下步骤实现:方法一:显示指定内容登录宝塔面板,进入网站管理页面。选择网站,点击需要配置的网站右侧的“设置”按钮。..

必须掌握的MySQL优化指南(2)

4|0表分区MySQL 在 5.1 版引入的分区是一种简单的水平拆分,用户需要在建表的时候加上分区参数,对应用是透明的无需修改代码。对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实..

mysql分表简单介绍

一、Mysql分表的原因1、当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会停在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。2、mysql中有一种机制是表锁定..

MySQL创建用户与授权

一, 创建用户: 命令:CREATE USER'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, ..

.net环境下跨进程、高频率读写数据

一、需求背景1、最近项目要求高频次地读写数据,数据量也不是很大,多表总共加起来在百万条上下。单表最大的也在25万左右,历史数据表因为不涉及所以不用考虑,难点在于这个规模的热点数据,变化非常频繁。数据来源..

必须掌握的MySQL优化指南(1)

1.单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度。一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时..

配置不同环境下启用swagger,在生产环境关闭swagger

前言Swagger使用起来简单方便,几乎所有的API接口文档都采用swagger了。使用示例:http://www.cnblogs.com/woshimrf/p/swagger.html, 现在开发中可以参考文档,但生产环境并不想暴露出去。配置只要在不同环境中配置..

VS创建.NET Core项目使用Docker方式部署到Linux服务器

在 Visual Studio(VS) 中,使用 Docker 方式部署 .NET Core 项目 到 Linux 服务器,可以简化环境管理并提高部署效率。以下是完整教程:1. 在 VS 创建 .NET Core 项目并启用 Docker新建 ASP.NET Core 项目打开 Visu..

使用 html2canvas 实现截图功能

html2canvas 是一个开源的 JavaScript 库,用于将网页上的 HTML 元素渲染成图像。它通过遍历页面的 DOM 树和计算样式,然后将其绘制到 <canvas> 元素上,最终生成图片。该库不依赖服务器端,而是通过浏览器端的 Java..

使用SuperWebSocket实现Web消息推送

在大部分Web系统中,我们可能遇到需要向客户端推送消息的需求。SuperWebSocket第三方库能让我们轻松的完成任务。SuperWebSocket第三方库可以从网上下载,不过通过Visual Studio Nuget安装更快。引用SuperWebSocket相..

用SignalR和Layui搭建自己的web聊天网站

1.开发背景之前是做项目一直有一个困扰,就是如何进行及时通讯,本人.Net开发,不太想用别人的接口,然后偶然的机会知道了SignalR,那么什么是SignalR呢?2.SignalR简介ASP.NET SignalR是ASP.NET开发人员的库,它简..

.NET C# 使用Hook钩子实现全局监听键盘和鼠标

C# 是一种面向对象的编程语言,具有丰富的类库和工具支持,适用于各种类型的应用程序开发。Windows 提供了一种称为"钩子"(Hook)的机制,允许拦截并处理系统级别的事件,如键盘按键和鼠标移动。通过结合 C# 和 Hook..

C#使用 Attribute 实现 AOP 功能

在 C# 中,通过自定义 Attribute 并结合一些技术(如动态代理、反射等)可以实现 AOP(面向切面编程)。AOP 通常用于日志记录、性能监控、权限验证等横切关注点。以下是一个使用 C# Attribute 实现 AOP 功能的示例。..

ABP.Net Core使用教程(一)启动模版项目

只需要简单的3步:1,到官网下载模版项目 https://aspnetboilerplate.com/Templates2,用VS2017打开,将Web.Host设置为启动项3,在程序包管理器控制台(Nuget控制台)里设定默认项目为EntityFrameworkCore,执行命令..

C#中的线程安全的集合ConcurrentQueue使用示例

在多线程编程中,如何安全地在不同线程之间共享数据是一个非常重要的问题。C# 为我们提供了一些专门设计的线程安全集合,其中之一就是 ConcurrentQueue<T>。它是一种先进先出(FIFO)的数据结构,专门为多线程环境设..

CSS砌体布局示例和使用场景

CSS砌体布局(Masonry Layout)CSS砌体布局是一种网页布局技术,它的灵感来源于砖石墙的排列方式,类似于“拼图”或“拼砖”的效果。在砌体布局中,元素的排列并不完全遵循传统的网格布局规则,..

使用CSS columns-visibility实现砌体布局

CSS的 columns 属性(如 columns、column-count 和 column-width)通常用于多列文本布局,而不是直接用于砌体布局。然而,结合 columns 和 visibility 属性,可以在某些情况下实现类似砌体布局的效果,虽然它并不完..

发表回复

返回顶部