【Docker-Dev】Mac M2 搭建docker mysql

Mac M2 搭建Mysql

  • 1、前言
  • 2、前置说明-Docker的代理访问
  • 3、前置说明-Mysql的镜像访问
    • 3.1、提取信息
      • 3.1.1、开启Mysql的实例
      • 3.1.2、Dokcer连接Mysql
      • 3.1.3、官方简易版的docker-compose
      • 3.1.4、如何登录mysql bash
      • 3.1.5、自定义my.cnf文件
      • 3.1.6、如何知道其他自定义配置项
  • 4、M2安装Mysql具体步骤
  • 5、总结

1、前言

  本文主要针对M2下,相应进行开发环境搭建,然后做一个文档记录,希望对相关人有帮助。如果只想要Docker-Compose文件,请转到第四节。

2、前置说明-Docker的代理访问

  由于docker是海外,所以需要翻墙,为了下载镜像OK,所以在M2 Docker中设置代理,否则,Docker登录会异常。Docker Destop的安装教程这里则不重复累赘,在官网比较容易。
Docker Host设置

为了使得代理生效,由于Docker Destop使用CLI的方式的Docker生效,需要将代理软件设置全局代理。每个代理软件设置的方式不同。最后需要在Command输入如下命令使得生效。

export all_proxy=http://127.0.0.1:8001

如果想取消,则输入下面命令,

unset all_proxy

每个人的代理软件不同,所以代理地址也会不一样,所以需要看好自己的代理地址,目前举例子的情况下,我以自己的代理软件的代理地址为例,代理地址设置的是8001。

3、前置说明-Mysql的镜像访问

点击 MYSQL官方镜像说明,注意如何Docker命令的官方信息。

官方地址需要VPN才能访问

3.1、提取信息

本节是针对文档的一些关键性提取,官方文档主要是介绍如何Docker CLI的方式启动Mysql。

3.1.1、开启Mysql的实例

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
  1. some-mysql是容器名
  2. MYSQL_ROOT_PASSWORD是root用户的数据库密码
  3. tag是指定版本

3.1.2、Dokcer连接Mysql

通过mysql的命令行客户端连接mysql

docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p
  • some-myslql是mysql的容器名
  • some-network是连接docker的网络

这里的some-nework,我觉得在上一个命令没有指定的情况下,是容器启动对外暴露的localhost:随机端口,这个在docker destop中一般会展示随机接口是什么,只是我没有试过这个命令。我认为构建docker-compose指定暴露宿主机的同样端口比较好,否则暴露是随机端口,不会进行连接。

3.1.3、官方简易版的docker-compose

官方介绍了简易版的docker-compose,但是没有一些自定义设置,比如字符集设置之类,本文第三大部分则是以这个为基础,研究了一下docker-compose语法,然后写了一个docker-compose,具体步骤请看后文第四章。

# Use root/example as user/password credentials
version: '3.1'services:db:image: mysql# NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password# (this is just an example, not intended to be a production configuration)command: --default-authentication-plugin=mysql_native_passwordrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: exampleadminer:image: adminerrestart: alwaysports:- 8080:8080

然后运行

docker stack deploy -c stack.yml mysql

或者

docker-compose -f stack.yml up

等待初始化完成访问 http://swarm-ip:8080, http://localhost:8080, 或者 http://host-ip:8080 访问页面的adminer。

adminer是页面管理mysql的一种工具

3.1.4、如何登录mysql bash

当容器起来后,如何登录mysql内部?

docker exec -it some-mysql bash

some-mysql就是你起的容器id名字。

如果想知道自己启动的容器名,则用

docker ps

然后看列表输出,后面会介绍。

3.1.5、自定义my.cnf文件

MySQL的默认配置可以在/etc/mysql/my.cnf中找到,可以通过外部指定容器配置目录的方式,把自定义的/my/custom/config-file.cnf的配置文件作为docker启动mysql容器时的默认设置。

docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

3.1.6、如何知道其他自定义配置项

多配置选项可以作为标志传递给mysqld,然后能够自定义容器,而无需cnf文件。例如,如果想要更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4),只需运行以下命令:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

如何想知道其他自定义配置项:

docker run -it --rm mysql:tag --verbose --help

Docker的配置

注意,这里是提前下载好了docker的image

4、M2安装Mysql具体步骤

如果没有改命令的方式,下载mysql的5.7x版本,会爆 “no matching manifest for linux/arm64/v8 in the manifest list entries”,实际上mac兼容amd64架构,所以下载镜像,指定platform。

docker pull --platform linux/amd64 mysql:5.7.42

然后在自己的机器随意找一个目录,做宿主机和Docker的文件关联,例如,我在docker-dev目录下,创建mysql,以及相关的目录和文件。

mkdir /Users/tanqiwei/docker-dev/mysql
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/conf
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/data
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/logs
mkdir /Users/tanqiwei/docker-dev/mysql/env-volumn/mysql-files

然后进入/Users/tanqiwei/docker-dev/mysql/env-volumn/conf,创建my.cnf,内容如下所示:

[client]
default_character_set=utf8
[mysqld]
default_character_set=utf8

最后在/Users/tanqiwei/docker-dev/mysql下编辑docker-compose.yml文件。

# Use root/example as user/password credentials
version: '3.1'services: mysql-dev:image: mysql:5.7.42# 针对M1/M2的毛病platform: linux/amd64# 当docker启动时,该容器也重新启动restart: alwaysports: - 3306:3306environment: MYSQL_ROOT_PASSWORD: rootvolumes: # 将宿主机的my.cnf文件映射到Docker容器中- /Users/tanqiwei/docker-dev/mysql/env-volumn/conf:/etc/mysql/conf.d# 将容器的/var/lib/mysql目录挂载到宿主机的/Users/tanqiwei/docker-dev/mysql/env-volumn/data目录- app_db:/var/lib/mysql# 将容器的/var/log/mysql目录挂载到宿主机的/Users/tanqiwei/docker-dev/mysql/env-volumn/logs目录- /Users/tanqiwei/docker-dev/mysql/env-volumn/logs:/var/log/mysql- /Users/tanqiwei/docker-dev/mysql/env-volumn/mysql-files:/var/lib/mysql-filesadminer:image: adminerrestart: alwaysports:- 8101:8080environment:ADMINER_DEFAULT_SERVER: mysql-devdepends_on:- mysql-devvolumes: app_db:driver: localdriver_opts:type: noneo: binddevice: /Users/tanqiwei/docker-dev/mysql/env-volumn/datanetworks: nt_mysql-dev:driver: bridge      

最后使用Docker Compose命令启动
请添加图片描述

接下来进入mysql中命令,先输入docker ps得到运行列表(从log也可以看出mysql启动实例名字)。

tanqiwei@tanqiweideMacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE                  COMMAND                   CREATED             STATUS             PORTS                               NAMES
faf7e3cd831c   adminer                "entrypoint.sh php -…"   About an hour ago   Up About an hour   0.0.0.0:8101->8080/tcp              mysql-adminer-1
27cd34e2146c   mysql:5.7.42           "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-mysql-dev-1
429226c9d199   mariadb:10.6.4-focal   "docker-entrypoint.s…"   25 hours ago        Up 3 hours         3306/tcp, 33060/tcp                 mysql-test-db-1

这里可以看出来是mysql-mysql-dev-1,然后执行下面命令

docker exec -it mysql-mysql-dev-1 bash

请添加图片描述

接着创建数据库test,命令简单不展示了。

然后打开浏览器,http://localhost:8101.
adminer

这里是由于我登录过,所以左侧保留有信息
请添加图片描述

于是mysql的开发环境就搭建好了。
如果想关闭,则新建terminal,在/Users/tanqiwei/docker-dev/mysql的目录下,即原来docker-compose.yml文件所在的目录,执行如下命令关闭即可:

docker compose stop

5、总结

这篇文章主要是我安装mysql的一些笔记,希望对其他人有帮助

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

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

相关文章

LeetCode刷题--- 有效的数独

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主…

什么是负载均衡?

负载均衡是指在计算机网络领域中,将客户端请求分配到多台服务器上以实现带宽资源共享、优化资源利用率和提高系统性能的技术。负载均衡可以帮助小云有效解决单个服务器容量不足或性能瓶颈的问题,小云通过平衡流量负载,使得多台服务器能够共同…

模式识别与机器学习(十二):Stacking

原理 在本次实验中以决策树、svm和随机森林为基学习器,以决策树为元学习器。 Stacking的做法是首先构建多个不同类型的一级学习器,并使用他们来得到一级预测结果,然后基于这些一级预测结果,构建一个二级学习器,来得到…

基于MATLAB的泊松分布,正态分布与伽玛分布(附完整代码与例题)

目录 一. 泊松分布 1.1 理论部分 1.2 MATLAB函数模型 1.3 例题 二. 正态分布 2.1 理论部分 2.2 MATLAB函数模型 2.3 例题 三. 伽玛分布 3.1 理论部分 3.2 MATLAB函数模型 3.3 例题 一. 泊松分布 1.1 理论部分 Poisson分布是离散的,其x值只能取自然数。…

const和constexpr

constexpr 是 C 11 标准新添加的关键字,在此之前(C 98/03标准)只有 const 关键字,其在实际使用中经常会表现出两种不同的语义(常量和只读)。 dis_1() 函数中的“const int x”只是想强调 x 是一个只读的变量…

Neo4j 5建库

Neo4j 只有企业版可以运行多个库,社区版无法创建多个库,一个实例只能运行一个库; 如果业务需要使用多个库怎么办呢? 就是在一个机器上部署多个实例,每个实例单独一个库名 这个库的名字我们可以自己定义; …

Hadoop之HDFS 详细教程

1、HDFS概述 Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪一种,需要看我们具体的实现类,在…

实战13 分配角色

目录 1、分配角色思路 2、分配角色回显接口实现 3、分配角色回显前端实现 3.1 编写前端api脚本代码 3.2 编写分配角色窗口代码 3.3 编写分配角色回显脚本代码 4、分配角色后端接口 4.1 UserRoleDTO 4.2 UserMapper 4.3 UserMapper.xml 4.4 UserService 4.5 UserServ…

ASP.Net实现新闻添加查询(三层架构,含照片)

目录 演示功能: 点击启动生成页面 点击搜索模糊查询 点击添加跳转新界面 ​编辑 点击Button添加 步骤: 1、建文件 ​编辑 2、添加引用关系 3、根据数据库中的列写Models下的XueshengModels类 4、DAL下的DBHelper(对数据库进行操作…

vue3+elementPlus:el-drawer新增修改弹窗复用

在el-drawer的属性里设置:title属性&#xff0c;和重置函数 //html<!-- 弹窗 --><el-drawerv-model"drawer":title"title":size"505":direction"direction":before-close"handleClose"><el-formlabel-posit…

数据挖掘(作业3

任务一 对以下数据集使用K均值聚类算法&#xff1a; 1&#xff09;观察实验结果是否符合预期&#xff1b; 2&#xff09;利用SSE标准确定K值&#xff1b; 3&#xff09;自行调参并观察对聚类结果的影响。 注意&#xff1a;需要把类别信息去掉。 “tutorial3_Data Explorat…

HTTP代理服务器:Go语言下的“网络翻译官”

开场白&#xff1a;在这个全球化的网络时代&#xff0c;有时我们需要一个“翻译官”来帮助不同系统、不同语言进行交流。今天&#xff0c;我们就来探讨如何使用Go语言&#xff0c;轻松实现这样一个角色——HTTP代理服务器&#xff0c;让我们的网络请求更加畅通无阻&#xff01;…

模式识别与机器学习-无监督学习-聚类

无监督学习-聚类 监督学习&无监督学习K-meansK-means聚类的优点&#xff1a;K-means的局限性&#xff1a;解决方案&#xff1a; 高斯混合模型&#xff08;Gaussian Mixture Models&#xff0c;GMM&#xff09;多维高斯分布的概率密度函数&#xff1a;高斯混合模型&#xff…

c语言用四种方式求解成绩之中最高分和最低分的差值

文章目录 一&#xff0c;题目二&#xff0c;方法1&#xff0c;方法一2&#xff0c;方法二3&#xff0c;方法三4&#xff0c;方法四 三&#xff0c;示例结果 一&#xff0c;题目 最高分最低分之差 输入n个成绩&#xff0c;换行输出n个成绩中最高分数和最低分数的差 输入 : 两行…

信息网络协议基础-IPv6协议

文章目录 概述为什么引入IP服务模型IPv4的可扩展性问题解决方法***CIDR(Classless Inter-Domain Routing, 无类别域间寻路)前缀汇聚***前缀最长匹配***NAT(网络地址转换)存在的问题解决方案路由表配置***局限性IPv6协议头标IPv6地址表示前缀类型单播地址链路局部地址(Link-Loca…

浅谈WPF之ToolTip工具提示

在日常应用中&#xff0c;当鼠标放置在某些控件上时&#xff0c;都会有相应的信息提示&#xff0c;从软件易用性上来说&#xff0c;这是一个非常友好的功能设计。那在WPF中&#xff0c;如何进行控件信息提示呢&#xff1f;这就是本文需要介绍的ToolTip【工具提示】内容&#xf…

自动备份B站Up主最新视频到百度网盘的Python脚本详解

自动备份B站Up主最新视频脚本详解&#xff08;Win和Linux有些不同&#xff09; 前言&#xff1a; 次篇文章启发于某些大胆的UP主&#xff08;老马&#xff09;的多次被封&#xff0c;并被下架一些视频。有些人并不能及时观看到&#xff0c;故写一个脚本自动下载最新视频。 &am…

中小企业运营难题:CRM系统为您解决!

​CRM如何帮助中小企业解决业务与团队之间的问题&#xff1f;它可以帮助企业获取潜在客户、数据储存管理、建立标准化流程、减少客户流失、促进客户沟通等。客户关系管理的核心理念要以客户为最主要的资源&#xff0c;提供全面的客户服务&#xff0c;满足客户要求&#xff0c;实…

【信息安全原理】——入侵检测与网络欺骗(学习笔记)

&#x1f4d6; 前言&#xff1a;在网络安全防护领域&#xff0c;防火墙是保护网络安全的一种最常用的设备。网络管理员希望通过在网络边界合理使用防火墙&#xff0c;屏蔽源于外网的各类网络攻击。但是&#xff0c;防火墙由于自身的种种限制&#xff0c;并不能阻止所有攻击行为…

C++构建简单静态库实例(cmakelist)

一、开发实例 通过cmake构建静态开发实例如下: 1.1 代码目录 代码目录结构如下: 1.2 代码内容 1.2.1 CMakeLists.txt # CMake 最低版本要求 cmake_minimum_required(VERSION 3.10)# 项目名称 project(mylib)# 添加源文件 set(SOURCE_FILESsrc/mylib