小白必看web专题!配置环境还在用phpstudy?该用docker了!(php+nginx+mysql+phpmyadmin。)

大家好,我是Dest1ny。

大家用mac或者是windows都是使用phpstudy。

今天docker来搭建一整个php+nginx+mysql+phpmyadmin。

而且mac用docker比较方便!

docker才是众望所归。

大家多多点赞,多多支持,谢谢!!!!


CLASS-1 pull环境

1. 先去pull我们需要的环境(PHP,Nginx,MySQL)

下面是pull的部分

docker pull nginx
docker pull php:7.1-fpm
docker pull mysql:5.7
docker pull phpmyadmin

然后就一直pull完,就不掩饰了!

如果pull不成功,基本上是网络问题

CLASS-2 创建映射目录

在宿主机去创建docker需要映射的目录

就类似于在宿主机映射到docker的目录,docker容器里对应的目录会同时改变


mkdir -p ~/docker/www
mkdir -p ~/docker/nginx/conf.d/
mkdir -p ~/docker/mysql/data
mkdir -p ~/docker/mysql/conf.d

这是搞好之后的

CLASS-3 创建容器

nginx容器


docker run -p 8080:80 --name nginx \
-v ~/docker/www:/usr/share/nginx/html \
-v ~/docker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
-d nginx
  • docker run -p 8080:80

    • -p 8080:80:将宿主机的 8080 端口映射到容器的 80 端口,这样你可以通过访问 http://localhost:8080 来访问 Nginx 服务。
  • --name nginx

    • 给这个容器起一个名字叫 nginx,方便以后管理和识别这个容器。
  • -v /docker/www:/usr/share/nginx/html

    • -v 选项用于挂载卷,将宿主机的 /docker/www 目录挂载到容器内的 /usr/share/nginx/html 目录。这个目录是 Nginx 默认的网页目录,所以你可以把网页文件放在 /docker/www 里,容器内的 Nginx 就会自动读取并展示这些文件。
  • -v /docker/nginx/conf.d:/etc/nginx/conf.d

    • 同样使用 -v 挂载,将宿主机的 /docker/nginx/conf.d 目录挂载到容器内的 /etc/nginx/conf.d 目录。这个目录通常用于存放 Nginx 的配置文件,你可以通过修改宿主机的配置文件来动态调整容器内的 Nginx 配置。
  • --privileged=true

    • 赋予容器更高的权限,允许容器访问宿主机的更多资源。通常情况下,运行 Nginx 不需要这个参数,但在某些特定情况下(例如需要更多权限进行特定操作时),可能会使用这个选项。
  • -d nginx

    • -d 表示以后台模式运行容器。
    • nginx 是使用的镜像名称,Docker 将基于该镜像创建并运行容器。

 php容器

docker run -p 9000:9000 --name php-fpm \
-v /docker/www:/var/www/html \
-d php:7.1-fpm
  • docker run -p 9000:9000

    • -p 9000:9000:将宿主机的 9000 端口映射到容器的 9000 端口。这意味着你可以通过宿主机的 9000 端口来访问容器内的 PHP-FPM 服务(PHP FastCGI Process Manager)。
  • --name php-fpm

    • 给这个容器起一个名字叫 php-fpm,方便以后管理和识别这个容器。
  • -v /docker/www:/var/www/html

    • -v 选项用于挂载卷,将宿主机的 /docker/www 目录挂载到容器内的 /var/www/html 目录。这个目录通常是 PHP-FPM 读取 PHP 文件的默认路径,因此你可以将 PHP 项目放在 /docker/www 中,容器内的 PHP-FPM 就会读取并解析这些 PHP 文件。
  • -d php:7.1-fpm

    • -d 表示以后台模式运行容器。
    • php:7.1-fpm 是使用的镜像名称,表示使用 PHP 7.1 版本的 FPM 镜像来创建并运行容器。

 获取一下ip,后面写配置文件要用!

docker inspect php-fpm --format='{{.NetworkSettings.IPAddress}}'# 返回 IP
172.17.0.3

打开nginx的配置文件 


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

 直接写入内容即可,172.17.0.3是我自己的容器ip地址,你们的就按照前面那个命令去获取就行

server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.php index.html index.htm;}location ~ \.php(.*)$ {root          	/var/www/html;           # php 容器的目录,进 php 容器查看fastcgi_pass	172.17.0.3:9000;         # php 容器的IPfastcgi_index	index.php;fastcgi_param	SCRIPT_FILENAME $document_root$fastcgi_script_name;include	fastcgi_params;}}

现在测试一下,去www下面去写一个php文件,看看有什么反应 

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

成功!!!


mysql容器

下面是mysql的,步骤是一样的 

docker run --name mysql -p 3306:3306 \
-v /docker/mysql/conf.d:/etc/mysql/conf.d \
-v /docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  • docker run --name mysql

    • 给这个容器起一个名字叫 mysql,方便以后管理和识别这个容器。
  • -p 3306:3306

    • 将宿主机的 3306 端口映射到容器的 3306 端口,这样你可以通过访问宿主机的 3306 端口来连接到 MySQL 数据库(MySQL 默认的端口是 3306)。
  • -v /docker/mysql/conf.d:/etc/mysql/conf.d

    • -v 选项用于挂载卷,将宿主机的 /docker/mysql/conf.d 目录挂载到容器内的 /etc/mysql/conf.d 目录。这个目录通常用于存放 MySQL 的配置文件(例如自定义的 my.cnf 文件),这样你可以通过修改宿主机的配置文件来调整容器内的 MySQL 配置。
  • -v /docker/mysql/data:/var/lib/mysql

    • 将宿主机的 /docker/mysql/data 目录挂载到容器内的 /var/lib/mysql 目录。这个目录是 MySQL 存储数据库文件的默认路径,这样可以实现数据持久化,即使容器被删除或停止,数据依然保存在宿主机上。
  • -e MYSQL_ROOT_PASSWORD=123456

    • -e 选项用于设置环境变量,这里设置了 MySQL 的根用户密码为 123456。在第一次启动容器时,MySQL 会用这个密码创建 root 用户。
  • -d mysql:5.7

    • -d 表示以后台模式运行容器。
    • mysql:5.7 是使用的镜像名称,表示使用 MySQL 5.7 版本的镜像来创建并运行容器。

看一下ip

docker inspect mysql --format='{{.NetworkSettings.IPAddress}}'# 返回 IP
172.17.0.1

创建好之后,我们去下载一个mysqli,后面会用到 

# 进入容器
docker exec -it php-fpm /bin/bash# 安装 pdo_mysql mysqli
docker-php-ext-install pdo_mysql mysqli# CTRL + D 退出容器
docker restart php-fpm

phpmyadmin容器 

sudo  docker run --restart=always -d --name myadmin  -e PMA_HOST=172.17.0.1 -e PMA_PORT=49153 -p 20888:80 phpmyadmin

这里172.17.0.1是mysql的ip,大家自己有自己的不要搞混

之后访问一下,密码我们之前也设置好了,root/root

ok,全部配置好了,上个前端测试一下

访问一下


大家多多支持,您的关注和点赞是我最大的动力!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qml-Item的构造和显示顺序

Qml-Item的构造和显示顺序 qml文件中组件构造顺序 在同一个qml文件中&#xff0c;同层级的Item, 文件尾的Item优先构造&#xff0c;文件首的Item后构造。这就能解释默认情况下同一个qml文件中&#xff0c;几个同层级的item都设置了focus:true&#xff0c;为啥最上面item最终有…

echarts设置x轴中文垂直显示,x轴滚动条

echarts官网配置&#xff0c;主要配置dataZoom option {xAxis: {type: category,data: [张三,李四,王五,赵六,孙七,周八,吴九,郑十,钱十一,陈十二,刘十三,杨十四,黄十五,何十六,宋十七],axisLabel: {formatter: function (value) {return value.split().join(\n); // 使用换行…

超全!一文详解大型语言模型的11种微调方法

导读&#xff1a;大型预训练模型是一种在大规模语料库上预先训练的深度学习模型&#xff0c;它们可以通过在大量无标注数据上进行训练来学习通用语言表示&#xff0c;并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大&#xff0c;微调和推理阶段的资源消耗也在增加。…

爬虫实战(黑马论坛)

1.定位爬取位置内容&#xff1a; # -*- coding: utf-8 -*- import requests import time import re# 请求的 URL 和头信息 url https://bbs.itheima.com/forum-425-1.html headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like…

基于Java实现(PC)大学班级事务管理系统

courseDesign_Java Java 课设 要求 本次设计要求利用 Java 实现 C/S 模式的大学班级内日常事务管理系统&#xff08;PC 版&#xff0c;应用于校内网有线网络访问&#xff0c;暂不开发移动端&#xff09;&#xff0c;不得依赖现有的建模框架&#xff0c;使用 swings 技术完成如…

华为OD机试 - 爱吃蟠桃的孙悟空 - 二分查找(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

决策树和集成学习的概念以及部分推导

一、决策树 1、概述 决策树是一种树形结构&#xff0c;树中每个内部节点表示一个特征上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff0c;每个叶子节点代表一种分类结果 决策树的建立过程&#xff1a; 特征选择&#xff1a;选择有较强分类能力的特征决策树生成…

闯关leetcode——110. Balanced Binary Tree

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/balanced-binary-tree/description/ 内容 Given a binary tree, determine if it is height-balanced. A height-balanced binary tree is a binary tree in which the depth of the two subtrees…

决策树算法新手入门:从基础理论到Python实现

决策树新手入门详细教程 一、数学基础1. 信息熵(1) 基本定义(2) 条件熵(3) 有关定律 2. 信息增益 二、决策树的组成1. 决策节点2. 叶子节点3. 决策树的深度 三、决策树的建立&#xff08;基于信息增益&#xff09;—— ID31. 计算根节点的信息熵2. 计算属性的信息增益(1) 职业(…

【升华】python基础包NumPy学习

NumPy是使用Python进行科学计算的基础软件包。除其他外&#xff0c;它包括&#xff1a; 功能强大的N维数组对象。精密广播功能函数。集成 C/C和Fortran 代码的工具。强大的线性代数、傅立叶变换和随机数功能。 # 1、安装包 $ pip install numpy# 2、进入python的交互式界面 $…

蓄电池在线监测:保障电力安全的智能之选---安科瑞 吴雅芳

一、蓄电池在线监测的重要性 随着科技的飞速发展&#xff0c;蓄电池在各个领域的应用日益广泛&#xff0c;从通信、电力到金融、医疗等行业&#xff0c;蓄电池都扮演着至关重要的角色。然而&#xff0c;蓄电池在使用过程中也面临着诸多问题。 蓄电池老化可能导致鼓胀、短路、漏…

React 子组件调用父组件的方法,以及互相传递数据

<script type"text/babel" data-type"module"> import React, { StrictMode, useState } from react; import { createRoot } from react-dom/client;const ParentComponent () > {const [message, setMessage] useState("")//父组件…

【火山引擎】 Chat实践 | 大模型调用实践 | python

目录 一 前期工作 二 Doubao-pro-4k_test实践 一 前期工作 1 已在火山方舟控制台在线推理页面创建了推理接入点 ,接入大语言模型并获取接入点 ID。 2 已参考安装与初始化中的步骤完成 SDK 安装和访问凭证配置

基于SSM的个性化商铺系统【附源码】

基于SSM的个性化商铺系统 效果如下&#xff1a; 用户登录界面 app首页界面 商品信息界面 店铺信息界面 用户功能界面 我的订单界面 后台登录界面 管理员功能界面 用户管理界面 商家管理界面 店铺信息管理界面 商家功能界面 个人中心界面 研究背景 研究背景 科学技术日新月异…

LeetCode-3191 使二进制数组全部等于1的最少操作次数

又来到了今天的每日一题&#xff0c;距离上次更新每日一题得有十天了。 主要原因是这十天的题要么简单到爆&#xff0c;要么难到爆&#xff0c;再要么就是最近学校安排实训&#xff0c;时间比较紧。 废话不多说&#xff0c;来看看今天的题目。 题目很简单&#xff0c;就是给个…

CTF(五)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;web类题目easyphp。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 参考文章原文链接&#xff1a;Web安全攻防世界05 easyphp&#xff08;江苏工匠杯&#xff09;_攻防世界 easyphp-CSDN博客 一&#xff0c;观察页面。…

校验台账生成网络事业调查表的方法

校验台账生成网络事业调查表的方法 一、打开教育事业统计调查表学校&#xff08;机构&#xff09;信息管理标准化台账“采集信息核查辅助工具二、导入本校台账并校验三、调查表统计导出四、完 一、打开教育事业统计调查表学校&#xff08;机构&#xff09;信息管理标准化台账“…

在ESP-IDF环境中如何进行多文件中的数据流转-FreeRTOS实时操作系统_流缓存区“xMessageBuffer”

一、建立三个源文件和对应的头文件 建立文件名&#xff0c;如图所示 图 1-1 二、包含相应的头文件 main.h 图 2-1 mess_send.h mess_rece.h和这个中类似,不明白的大家看我最后面的源码分享 图2-2 三、声明消息缓存区的句柄 大家注意&#xff0c;在main.c中定义的是全局变…

Nodemon 深入解析与使用

目录 1. 基本知识2. Demo3. 高级配置 1. 基本知识 Nodemon 深入解析与使用指南 Nodemon 是一个强大的开发工具&#xff0c;用于监控 Node.js 应用程序中的文件变更&#xff0c;能自动重启应用&#xff0c;极大提高开发效率 基本的优点如下&#xff1a; 自动化&#xff1a;避…

【C语言】循环嵌套:乘法表

循环嵌套&#xff0c;外层循环执行一次&#xff0c;内层循环执行i次。分别控制 在循环的过程中加一层循环。 多层循环属于循环嵌套、嵌套循环 #include <stdio.h> #include <math.h> /* 功能&#xff1a;循环嵌套 乘法表 时间&#xff1a;2024年10月 地点&#xf…