【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 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
- some-mysql是容器名
- MYSQL_ROOT_PASSWORD是root用户的数据库密码
- 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的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.
这里是由于我登录过,所以左侧保留有信息
于是mysql的开发环境就搭建好了。
如果想关闭,则新建terminal,在/Users/tanqiwei/docker-dev/mysql
的目录下,即原来docker-compose.yml文件所在的目录,执行如下命令关闭即可:
docker compose stop
5、总结
这篇文章主要是我安装mysql的一些笔记,希望对其他人有帮助
相关文章:
【Docker-Dev】Mac M2 搭建docker mysql
Mac M2 搭建Mysql 1、前言2、前置说明-Docker的代理访问3、前置说明-Mysql的镜像访问3.1、提取信息3.1.1、开启Mysql的实例3.1.2、Dokcer连接Mysql3.1.3、官方简易版的docker-compose3.1.4、如何登录mysql bash3.1.5、自定义my.cnf文件3.1.6、如何知道其他自定义配置项 4、M2安…...
idea中终端Terminal页面输入命令git log后如何退出
1、idea中Terminal输入命令git log后如何退出? 2、解决 输入q键会自动退出git log命令...
程序员必备IDEA插件,什么是是IDE?
IDEA是一款功能强大的集成开发环境(IDE)插件,它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。 我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。今天就给大家介绍一款IDEA插件ÿ…...
SkyWalking UI 修改发布Nginx
文章目录 SkyWalking UI修改图标修改路由发布到Nginx添加认证修改路由模式vite.config.ts添加baseNginx配置 SkyWalking UI skywalking-booster-ui下载地址 修改图标 替换 logo.svg 修改路由 router - data - index.ts 发布到Nginx 添加认证 # 安装 yum install -y h…...
移动硬盘打不开怎么办?没有比这更好的办法了
移动硬盘打不开是常见故障,可能的原因有很多,例如硬盘驱动器故障、文件系统损坏、分区表错误等。本文将详细分析这些原因,并提供相应的解决方法,帮助您解决移动硬盘打不开的问题。 当移动硬盘打不开时,为了保留其中的文…...
[场景实现]:多选框与树形结构递归
一、场景描述 实现一个分配权限的页面,最左侧是大的权限模块的名称,左右侧是控制其是否勾选的多选框。中间部分是一级权限模块下的子权限名称及多选框。 请求此权限模块数据的接口返回的是树形结构 对象数组。 主要属性为menuName表示权限名࿰…...
从0到1浅析Redis服务器反弹Shell那些事
文章目录 前言Redis服务1.1 特点与应用1.2 安装与使用1.3 语法和配置1.4 未授权访问 反弹Shell2.1 Web服务写入Webshell2.2 Linux定时任务反弹shell2.3 /etc/profile.d->反弹shell2.4 写入ssh公钥登录服务器2.5 利用Redis主从复制RCE2.6 SSRF漏洞组合拳->RCE 总结 前言 …...
JavaScript中alert、confrim、prompt的使用及区别【精选】
Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JavaScript中alert、confrim、prompt的区别及使用以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任…...
Docker Compose容器编排实战
介绍 Docker Compose 是 Docker 官方提供的一种工具,用于定义和运行多个 Docker 容器的应用。它使用简单的 YAML 文件(通常称为 docker-compose.yml)来配置应用的服务,并使用单个命令即可创建、启动和停止整个应用。 官方文档&am…...
科技创新实验室数据管理优选:高效企业网盘推荐
科技创新实验室建设是国家加强科技创新基本能力建设的重要措施,企业网盘等高效办公工具的应用是保证科技创新实验室正常运行、提高科研项目团队合作效率的重要手段。 本文将介绍企业网盘Zoho WorkDrive提供的解决方案: 行业痛点1:分散的数据…...
记录一次云服务器使用docker搭建kafka的过程
创建网络 一定要将zookeeper注册中心与kafka建在一个network中,不然在springboot 集成 kakfa的demo测试代码中进行消息发送时会超时,报错: E x c e p t i o n t h r o w n w h e n s e n d i n g a m e s s a g e w i t h k e y ‘ n u l l…...
微信小程序与vue区别
微信小程序和Vue是两个完全不同的东西,虽然它们都是前端技术,但是有以下几点区别: 技术栈不同: 微信小程序使用WXML、WXSS和JavaScript进行开发,而Vue使用HTML、CSS和JavaScript进行开发。微信小程序是一种基于微信平台…...
GIT提交、回滚等基本操作记录
1、add文件时warning: LF will be replaced by CRLF in .idea/workspace.xml. 原因:windows中的换行符为 CRLF, 而在Linux下的换行符为LF,所以在执行add . 时会出现以下提示 解决:git config core.autocrlf false 2、GIT命令&…...
Apollo自动驾驶:从概念到现实的里程碑
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 ChatGPT体验地址 文章目录 前言1. Apollo Client2. Apollo Server3. Apollo Federation4. Apollo Tracing5. Apollo Codegen6. Apollo Link7. 其他工具和框架结论 🚀…...
再看promise
第一次学的时候没学牢固 后面意识到promise的重要性之后 陆陆续续的看、查,终于在今天 感觉好像明白点了 把自己敲的理解分享给大家 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name&…...
Redis 分布式锁总结
在一个分布式系统中,由于涉及到多个实例同时对同一个资源加锁的问题,像传统的synchronized、ReentrantLock等单进程情况加锁的api就不再适用,需要使用分布式锁来保证多服务实例之间加锁的安全性。常见的分布式锁的实现方式有zookeeper和redis等。而由于redis分布式锁相对于比…...
Vue懒加载深度解析:提升性能、优化用户体验的完整指南
文章目录 🌳引言🌳Vue懒加载基础🌲什么是懒加载?🌲组件级懒加载🌲图片懒加载 🌳懒加载的原理与优势🌲组件懒加载原理🌲图片懒加载原理🌲懒加载的优势 &#x…...
“图解C语言:一维数组的声明、创建与初始化艺术“
各位少年: 标题:《C语言一维数组的探索之旅:从声明到初始化,及如何避免常见误区》 引言 在编程世界中,数组无疑是最基础且重要的数据结构之一,尤其在C语言中,它以其简洁明了的特性为各类数据处…...
Unity坦克大战开发全流程——开始场景——场景装饰
开始场景——场景装饰 step1:先创建两个场景 step2:将地板拖拽到场景上 step3:将方块拖拽到场景上,并设置其参数 step4:将坦克拖拽到场景上 step5:创建点光源 step6:旋转炮塔 将该脚本挂载到炮…...
【链表OJ—链表的回文结构】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…...
关键字:try-catch关键字
在 Java 中,try-catch关键字用于异常处理。它们允许编写代码来捕获和处理异常,以确保程序能够在出现问题时合理地处理它们而不会崩溃。 以下是try-catch关键字的基本语法: 在try块中编写可能会抛出异常的代码。如果在try块中的任何代码抛出…...
双指针算法
目录 双指针算法 最长连续不重复子序列 数组元素的目标和 双指针算法 常见的两种样式: 双指针指向两个不同的区间 双指针指向一个区间的左右两端,这种方式更加常见 双指针算法思想 for(int i0;i<n;i)for(int j0;j<n;j)O(n^2) 时间复杂度 …...
Cucumber-JVM的示例和运行解析
Cucumber-JVM 是一个支持 Behavior-Driven Development (BDD) 的 Java 框架。在 BDD 中,可以编写可读的描述来表达软件功能的行为,而这些描述也可以作为自动化测试。 Cucumber-JVM 的最小化环境 Cucumber-JVM是BDD的框架, 提供了GWT语法的相…...
OSPF ROUTER-ID-新版(15)
目录 整体拓扑 操作步骤 1.INT 验证Router-ID选举规则 1.1 查看路由器Router-ID 1.2 配置R1地址 1.3 查看R1接口信息 1.4 查看R1Router-ID 1.5 删除接口IP并查看Router-ID 1.6 手工配置Router-ID 2.基本配置 2.1 配置R1的IP 2.2 配置R2的IP 2.3 配置R3的IP 2.4 配…...
阿里开源大模型 Qwen-72B 私有化部署
近期大家都知道阿里推出了自己的开源的大模型千问72B,据说对于中文非常友好,在开源模型里面,可谓是名列前茅。 千问拥有有强大的基础语言模型,已经针对多达 3 万亿个 token 的多语言数据进行了稳定的预训练,覆盖领域、…...
ubuntu下编译obs-studio遇到的问题记录
参考的是这篇文档:Build Instructions For Linux obsproject/obs-studio Wiki GitHub 在安装OBS dependencies时, sudo apt install libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libswresample-dev libswscale-d…...
C++的一些知识
一. 语法 move怎么用 https://blog.csdn.net/zhangmiaoping23/article/details/126051520 这个文章讲的很好,其中有一些疑惑的点 (1) 左值引用不能接右值 class T1{int a; }; int main(){T1 t1 T1();T1 && t1_temp T1(); //T1()是一个临时对象…...
大数据 - 大数据入门第一篇 | 关于大数据你了解多少?
🐶1.1 概述 大数据(BigData):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据主要解决、海量数据的采…...
C语言——扫雷
扫雷是一款经典的小游戏,那如何使用C语言实现一个扫雷游戏呢? 一、全部源码 直接把全部源码放在开头,如有需要,直接拿走。 源码分为三个文件: test.cpp/c 主函数的位置 #include "game.h"int main() {…...
计算机网络【DNS】
DNS 基本概述 与 HTTP、FTP 和 SMTP 一样,DNS 协议也是应用层的协议,DNS 使用客户-服务器模式运行在通信的端系统之间,在通信的端系统之间通过下面的端到端运输协议来传送 DNS 报文。但是 DNS 不是一个直接和用户打交道的应用。DNS 是为因特…...
web网站开发有什么作用/网络营销课程去哪里学
文章目录基本初始化添加用户和组创建存储池创建数据集共享数据集数据集权限控制基本初始化 去官方网站www.truenas.com下载iso镜像,直接安装就可以启动了,Turenas最新版是基于debian11X,这里忽略安装步骤,安装完成启动࿰…...
做二手网站赚钱不/5151app是交友软件么
前言 本文我们来对Lucene具体如何进行数据的搜索,进行详细的介绍。 环境准备 我们直接使用在上一篇文章中的应用代码案例。 因为索引和存储两者是分开的,对于某一个字段我们可以建立索引,但是不存储,我们依然可以对此字段进行…...
具有设计感的网站/湘潭网页设计
前段时间和一个朋友聊天,酒席间向我抱怨他那段时间的郁闷:项目经理从客户那里拿来一个需求,实际上就是一个ppt描述,我这个朋友拿过来看后刚开始不觉得什么,一个通常的网站系统又能复杂的了哪去,但是越往后做就越发觉得…...
没有备案的网站怎么访问/网站推广优化排名教程
熔断 当某个服务调用慢或者有大量超时现象(过载),系统停止后续针对该服务的调用而直接返回,直至情况好转才恢复调用。这通常是为防止造成整个系统故障而采取的一种保护措施,也称过载保护。很多时候刚开始,可能只是出现了局部小规…...
wordpress seo by yoast中文/seo技术分享
OLED显示电容式土壤湿度传感器数据 本文将演示如何在OLED中显示土壤湿度传感器数据以及不同的数据值范围,使用不同的表情图片显示。 本次实例主要通过如下步骤来完成: 土壤湿度传感器数据采集OLEDc驱动采集数据处理及OLED显示在前面的文章中,对OLED及其驱动做了详细的介绍,…...
wordpress网站自动伪原创/seo优化神器
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串…...