用MacBook实操:docker本地部署mysql+php+nginx坏境

news2024/11/16 17:35:42

大家好,我拿出我的macbook,带着大家实操用docker部署mysql+php+nginx环境。

之前的小白实操搭建Nginx1.2.0+PHP7.0+MySQL5.7+Thinkphp5项目,看这篇就够了,欢迎阅读。

之前的是服务器上配置环境,现在在mac本地搭建全栈开发环境。

目录

1.docker

1.1docker下载:

1.2配置docker下载镜像

1.3 在本地建好对应映射关系的文件夹

2.mysql

2.1 mysql基础知识学习:MySQL 教程 | 菜鸟教程

2.2 docker下载mysql

2.3 docker配置mysql

2.4 docker查看

 2.5 进入mysql容器使用

3.php

3.1 php基础知识学习:PHP 教程 | 菜鸟教程

3.2 docker下载php-fpm:

3.3 docker配置php

3.4 docker查看

3.5 php中安装连接mysql的扩展

4.nginx

4.1 nginx基础知识学习:Nginx 安装配置 | 菜鸟教程

4.2 docker下载nginx

4.3 docker配置nginx

4.4 docker查看

4.5 docker 里修改 nginx随启动

4.6配置nginx

5.运行

以上,就是今天的学习,关注我,我们一起进步!

欢迎点赞、评论,谢谢!~


本文环境:

时间:2023年

mac:MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) 版本11.6

          处理器:2.3 GHz 四核Intel Core i7

docker:v20.10.22

mysql:5.6

php:7.2.34

nginx:1.23.3

1.docker

1.1docker下载:

Get Started | Docker进入官网,如图位置,点击mac版本的docker下载.

 

安装后,点击图标:

1.2配置docker下载镜像

docker打开后进入Settings,进入Docker Engine中添加镜像地址,这样下载其他模块速度快一点。

 

 

"registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn/",
    "https://hub-mirror.c.163.com/",
    "https://reg-mirror.qiniu.com"
  ]

1.3 在本地建好对应映射关系的文件夹

在www文件夹里新建一个index.php文件

<?php
echo phpinfo();
?>

 

2.mysql

2.1 mysql基础知识学习:MySQL 教程 | 菜鸟教程

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

2.2 docker下载mysql

docker pull mysql:5.6

2.3 docker配置mysql

docker run  -it --name mysql -p 3308:3306 -v ~/mynmp/mysql/conf:/etc/mysql/conf.d -v ~/mynmp/mysql/logs:/logs -v ~/mynmp/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

–name mysql 指定容器名称为 mysql

-e MYSQL_ROOT_PASSWORD=123456 初始化 root 用户的密码为 123456

-p 3308:3306 将容器的 3306 端口映射到主机的 3308 端口

-v ~/mynmp/mysql/data:/var/lib/mysql 将主机 ~/mynmp/mysql/data 目录挂载到容器的 /var/lib/mysql

-v ~/mynmp/mysql/conf:/etc/mysql/conf.d 将主机 ~/mynmp/mysql/conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf

-v ~/mynmp/mysql/mysql_sock:/var/run/mysqld 将主机 ~/mynmp/mysql/mysql_sock 目录挂载到容器的 /var/run/mysqld (为防止 php 容器无权限读取 mysql 容器的 sock 文件)

-d 后台运行

2.4 docker查看

docker ps

 2.5 进入mysql容器使用

进入mysql容器
docker exec -it mysql /bin/bash

启动mysql
mysql -uroot -p123456


查看mysql版本
status

授权远程链接
GRANT ALL ON *.* TO`'root'@'%'`;

刷新权限
flush privileges;

更改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

修改root密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限
flush privileges;

3.php

3.1 php基础知识学习:PHP 教程 | 菜鸟教程

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。


 

3.2 docker下载php-fpm:

docker pull php:7.2-fpm

3.3 docker配置php

docker run -it --name myphp -p 9000:9000 -v ~/mynmp/php/conf:/usr/local/etc/php/conf.d -v ~/mynmp/www:/www -v ~/mynmp/php/logs:/phplogs --privileged=true -d php:7.2-fpm

--name myphp 指定容器的名称为myphp

-p 9000:9000 将容器的 9000 端口映射到主机的 9000 端口

-v ~/mynmp/www:/www 将主机的 ~/mynmp/www 目录挂载到容器的 /www 目录

-v ~/mynmp/mysql/mysql_sock:/var/run/mysqld 将主机 ~/mynmp/mysql/mysql_sock 目录挂载到容器的 /var/run/mysqld (为防止 php 容器无权限读取 mysql 容器的 sock 文件)

--link mysql:mysql 将 mysql 容器的网络并入 myphp 容器,实现容器间的通信

-d 保持后台运行

3.4 docker查看

docker ps

3.5 php中安装连接mysql的扩展

docker exec -it myphp /bin/bash


docker-php-ext-install mysql
docker-php-ext-install mysqli
docker-php-ext-install pdo

4.nginx

4.1 nginx基础知识学习:Nginx 安装配置 | 菜鸟教程

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品.

4.2 docker下载nginx

docker pull nginx

4.3 docker配置nginx

docker run -it --name mynginx -p 8080:80 -v ~/mynmp/nginx/conf:/etc/nginx/conf.d -v ~/mynmp/www:/www -v ~/mynmp/nginx/logs:/var/log/nginx --link myphp:php -d nginx

--name nginx 指定当前容器名称为 nginx

-p 80:80 将容器的 80 端口映射到主机的 80 端口

-v ~/mynmp/www:/usr/share/nginx/html 将主机的 ~/mynmp/www 目录挂载到容器的 /www

-v ~/mynmp/nginx/conf.d:/etc/nginx/conf.d 将主机的 ~/mynmp/nginx/conf.d 目录挂载到容器的 /etc/nginx/conf.d

--link myphp:php 将 myphp 容器的网络并入 nginx 容器,实现容器间的通信

4.4 docker查看

docker ps

4.5 docker 里修改 nginx随启动

登录docker:  
docker exec -it mynginx /bin/bash

docker实例随docker启动:  
docker update --restart=always mynginx

更改配置后重启:
docker restart mynginx

4.6配置nginx

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root    /www;         
        index  index.html index.htm index.php;
	   # 因为我这里用的TP框架所以加了下面这个,可以根据自己情况去掉
        if (!-e $request_filename){
            rewrite ^(.*)$ /index.php?s=/$1 last;
            break;
        }
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   172.17.0.3:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
    # scripts$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

5.运行

以上三个模块安装配置好里,docker ps查看如下:

 打开http://localhost:8080/index.php ,可以看到如下图展示,所有配置完成!~

 以上就是今天的分享,你学会了吗?

 

以上,就是今天的学习,关注我,我们一起进步!

欢迎点赞、评论,谢谢!~

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

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

相关文章

LiveData详解(实战+源码+粘性事件解决方案)

1. 简介 LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周…

mysql查询之子查询

0. 概念 SQL语句中嵌套SELECT语句&#xff0c;称为嵌套查询&#xff0c;又叫子查询。 查询可以基于一个表或多个表。子查询可以添加到SELECT、UPDATE和DELETE中&#xff0c;而且可以进行多层嵌套。子查询常用操作符有 ANY(SOME)&#xff0c;ALL、IN、EXISTS。也可以使用比较运…

Codeforces Round 872 (Div. 2) A-C

Start&#xff1a;May/08/2023 20:05UTC8 Length&#xff1a;02:00 这次总该上分了吧 A LuoTianyi and the Palindrome String 1 s, 256 MB x8531 都一样是-1&#xff0c;普通回文是size()-1 #include<bits/stdc.h> using namespace std; #define int long long #def…

架构-软件工程模块-1

概述 这一模块选择题的分值比较多&#xff0c;案例题和论文也有能用上的地方。主要知识点会特殊标注或说明。 软件开发生命周期 软件工程三要素&#xff1a;方法、工具、过程。不会直接考&#xff0c;但可帮助记忆理解。 传统软件生命周期方法学分为&#xff1a;&#xff08;选…

使用sharding-scaling和sharding-proxy做分库分表数据迁移

背景&#xff1a; 现在有一个有一张表被分成了两张表&#xff0c;t_score1 ,t_score2&#xff0c;但后期数据量激增&#xff0c;两张表不能满足业务需求&#xff0c;扩张为2个库每个库2张表&#xff0c;即数据库 ds_0下有t_score1 ,t_score2 &#xff0c;数据库ds1下有t_score1…

浏览器插件的使用

善于使用浏览器插件&#xff0c;能起到高效上网的作用。 Microsoft Edge 是全球广受欢迎的浏览器&#xff0c;浏览器本身具有快速、简单和轻量级的特点。一流的性能系统和访问速度极大提升您的浏览体验。 对于浏览器的用户来说&#xff0c;安装一些实用的插件&#xff0c;能让…

Navicat设置Oracle数据库主键自增1的方法步骤

一、 创建如下表 Oracle数据库不同于Mysql、Sql Server数据库&#xff0c;Oracle数据库主键自增不能在建表时直接设置&#xff0c;而是需要通过序列和触发器进行设置&#xff01; 二、创建序列 1 2 3 4 5 6create sequence SEQ_DEVICEDATAINFO start with 1 …

iOS可视化动态绘制连通图

上篇博客《iOS可视化动态绘制八种排序过程》可视化了一下一些排序的过程&#xff0c;本篇博客就来聊聊图的东西。在之前的博客中详细的讲过图的相关内容&#xff0c;比如《图的物理存储结构与深搜、广搜》。当然之前写的程序是比较抽象的。上篇博客我们以可视化的方式看了一下各…

数据库(Sql server语言)(一)

例题&#xff1a;&#xff08;不介绍创建和插入&#xff09; star表 ●查询每个组合的名称及其成员个数 select g.name,count(*) 成员个数 from star s,stargroup g where s.gid g.gid group by g.name 如果不写where s.gidg,gid会出现成员个数重复 ●查询身高最高的团…

UG NX二次开发(C#)-建模-反向片体(SheetBody)的法向矢量

文章目录 1、前言2、在UG NX中构建一个片体3、在UG NX中查看片体的法向矢量4、采用UFun函数来实现法向反向5、代码实现6、测试效果1、前言 在UG NX中,一张曲面获取其所属的片体(SheetBody)对象,其在构建时有默认的法向矢量,有时处于功能的需求,比如加工时工件的材料去除方…

探秘信息检索:原理、实现与应用

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

(一)如何使用Spring Boot和MyBatis框架实现即时通信系统中的用户注册功能

文章目录 一、引言二、Spring Boot和MyBatis框架介绍三、注册1. 前端界面实现2. 后端数据持久化操作3. 代码示例 四、实现效果四、个人经验分享五、结语 一、引言 本文将介绍基于Spring Boot和MyBatis框架开发的注册功能实现&#xff0c;该功能是基于Linux的即时通信系统的一个…

二挡起步——pythonweb开发Django框架,前端原生+Django后端框架002(附带小案例)

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

ERROR: Could not find a valid gem ‘cocoapods‘ (>= 0) in any repository

Flutter启动的时候报错 需要重新安装cocoapods&#xff0c;那就重装&#xff0c;可是结果装不上 这是需要梯子的&#xff0c;我开了梯子也是一样安装不上 所以需要指定一下你的http代理ip和端口 你可以找一下你梯子的端口&#xff0c;找找代理命令&#xff0c;比如我的如下…

人工智能概述、发展历程及主要分支

人工智能概述 人工智能发展必备三要素&#xff1a; 数据 算法 计算力 &#xff0c;硬件支撑 CPU、GPU、TPU 计算力之CPU、GPU对比&#xff1a; CPU主要适合I\O密集型的任务 GPU主要适合计算密集型任务 什么类型的程序适合在GPU上运行&#xff1f; &#xff08;1&#…

数据库的逻辑组织

目录 一、数据库构架 二、系统数据库 1&#xff0e;master数据库 2. tempdb数据库 3. model数据库 4. msdb数据库 三、用户数据库 用户数据库在sysdatabases表中的记录 一、数据库构架 数据库存储是按物理方式在磁盘上作为两个或更多的文件实现。用户使用数据库时使…

java学习之异常三

目录 一、throws 一、基本说明 二、使用细节 二、自定义异常 一、 基本概念 ​编辑二、自定义异常的步骤 三、实例 四、练习 三、throw和throws的区别 四、本章作业 第一道 第二题 第三题 第四题 一、throws 一、基本说明 package com.hspedu.throws_;import java.i…

Linux常用命令(2)

文章目录 Linux常用命令&#xff08;2&#xff09;拷贝 cp语法拷贝hello.txt生成一个新文件hello1.txt拷贝hello.txt文件到hello目录里面去拷贝hello目录生成一个新目录hello1拷贝hello1目录到主目录里面去并且命名为hello2目录 更名/移动 mv删除 rm管理员命令echo / cat将信息…

JVM 程序计数器(PC 寄存器)

PC Register 介绍 JVM中的程序计数寄存器( Program Counter Register) 中&#xff0c;Register 的命名源于 CPU 的寄存器, 寄存器存储指令相关的现场信息。 CPU 只有把数据装载到寄存器才能够运行JVM 中的 PC 寄存器是对物理 PC 寄存器的一种抽象模拟PC 寄存器用来存储指向下一…

Vue 子组件触发父组件事件,传递多个参数以及异常情况处理

Start 今天这篇文章记录一下子组件调用父组件事件&#xff0c;传参的逻辑。以及一些特殊的情况。 1. 示例 1.1 父组件 <template><div>我是父组件<hr /><child to-say"toSay" /></div> </template><script> import ch…