【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_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 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: always
    ports: 
      - 3306:3306
    environment: 
        MYSQL_ROOT_PASSWORD: root
    volumes: 
      # 将宿主机的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-files


  adminer:
    image: adminer
    restart: always
    ports:
      - 8101:8080
    environment:
      ADMINER_DEFAULT_SERVER: mysql-dev
    depends_on:
      - mysql-dev

volumes: 
  app_db:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /Users/tanqiwei/docker-dev/mysql/env-volumn/data

networks: 
  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的一些笔记,希望对其他人有帮助

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

独立于 Github,更方便地管理自己的静态网站?来试试这套自托管 Git 仓库方案!

服务器结构简介 这套方案可以实现一个非常方便的编写博客的方法。你可以在自己电脑上写好文章,生成网站,并且直接git push即可部署到自己的服务器上,一气呵成,一般情况下完全不需要登陆远程服务器。 在讲述方案之前,我…

WEB 3D技术 three.js 基础网格材质演示几何体贴图 ao贴图效果

本文 我们来说一下 基础网格材质 之前我们也用到过这个材质 但是用的非常基础 我们在官网搜索 MeshBasicMaterial 这是能够给到物体最基础的材质 但也是性能最好的材质 后续我们还会学效果更好的物理材质 但还是那句话 效果复杂的东西对性能消耗自然会更多 我们拉下来 会发现…

【1】Docker详解与部署微服务实战

Docker 详解 Docker 简介 Docker 是一个开源的容器化平台,可以帮助开发者将应用程序和其依赖的环境打包成一个可移植、可部署的容器。Docker 的主要目标是通过容器化技术实现应用程序的快速部署、可移植性和可扩展性,从而简化应用程序的开发、测试和部…

uniapp 创建项目

uniapp 是一款基于 Vue 框架的跨平台应用开发框架。 创建 uniapp 项目 一、打开 HbuilderX 编辑器,点击新建项目。 二、选择 uniapp 项目、自定义项目名称、选择默认模板、选择 Vue 版本、点击创建。 三、这样 uniapp 项目就创建完毕啦! 运行 uniapp …

Little Snitch 5 for Mac(小飞贼系统安全防火墙软件) 支持M1

Little Snitch 5 for Mac是一款强大的防火墙软件,为Mac用户提供了全面的网络保护和隐私控制。该软件的核心功能是监控和管理应用程序对网络的访问权限。 Little Snitch 5可以实时监测应用程序的网络活动,并通过弹出窗口显示访问权限请求。用户可以根据需…

Spring Boot 入参校验及全局异常处理

版本依赖 JDK 17 Spring Boot 3.2.0 源码地址:Gitee Spring Boot validation spring-boot-starter-validation是基于hibernate-validator的实现,在Spring Boot项目中直接导入spring-boot-starter-validation即可。 Valid 和 Validated 的区别 适用范围…

Bert-vits2最终版Bert-vits2-2.3云端训练和推理(Colab免费GPU算力平台)

对于深度学习初学者来说,JupyterNoteBook的脚本运行形式显然更加友好,依托Python语言的跨平台特性,JupyterNoteBook既可以在本地线下环境运行,也可以在线上服务器上运行。GoogleColab作为免费GPU算力平台的执牛耳者,更…

【JavaScript】Set、Map、WeakSet、WeakMap

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

云计算:OpenStack 配置二层物理网卡为三层桥的接口

目录 一、理论 1.OpenStack 二、实验 1. Linux系统修改网卡 2.OpenStack 配置二层物理网卡为三层桥的接口 一、理论 1.OpenStack (1)概念 OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空…

【Java 中锁的种类】

文章目录 一、公平锁和非公平锁二、可重入锁(递归锁)三、自旋锁四、独占锁(写锁)/共享锁(读锁)/互斥锁 提示:以下是本篇文章正文内容,下面案例可供参考 一、公平锁和非公平锁 遵守先来后到的是公平锁,不遵守的是非公…

Jmeter 性能 —— 监控服务器!

Jmeter 监控Linux需要三个文件 JMeterPlugins-Extras.jar (包:JMeterPlugins-Extras-1.4.0.zip)JMeterPlugins-Standard.jar (包:JMeterPlugins-Standard-1.4.0.zip)ServerAgent-2.2.3.zip 1、Jemter 安装插件 在插件管理中心的搜索Servers Performa…

基于ChatGpt,Java,SpringBoot,Vue,Milvus向量数据库的定制化聊天Web demo

customized chat GitHub - bigcyy/customized-chatgpt: 基于ChatGpt,Java,SpringBoot,Vue,Milvus向量数据库的定制化聊天Web demo 简介 基于ChatGpt,Java,SpringBoot,Vue,Milvus向…

【MyBatis-Plus】进阶之乐观锁、悲观锁逻辑删除分页和查询构造器的使用

目录 一、乐观锁、悲观锁 1、什么是乐观锁和悲观锁 ①乐观锁(Optimistic Locking): ②悲观锁(Pessimistic Locking): ③实现方式 2、乐观锁和悲观锁的区别 ①乐观锁(Optimistic Locking) ②悲观锁&…

【头歌实训】PySpark Streaming 数据源

文章目录 第1关:MySQL 数据源任务描述相关知识PySpark JDBC 概述PySpark JDBCPySpark Streaming JDBC 编程要求测试说明答案代码 第2关:Kafka 数据源任务描述相关知识Kafka 概述Kafka 使用基础PySpark Streaming Kafka 编程要求测试说明答案代码 第1关&a…

亿赛通电子文档安全管理系统 linkfilterservice 未授权漏洞

产品简介 亿赛通电子文档安全管理系统,(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资…

在Spring Cloud中使用Ribbon完成一个简单的负载均衡demo

Spring Cloud系列断更了有一段时间了,这段时间最近都在忙着项目上的事,天天修复bug以及调整需求,反正各种操劳,了解业务需求,然后开发相关功能,很久都没碰Spring Cloud系列的相关文章了,最近回头…

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

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

Win10电脑蓝牙默认音量100的设置教程

在Win10电脑操作过程中,用户想设置连接蓝牙后音量默认是100,但不知道具体的设置操作步骤。这时候用户需要打开Win10系统上的注册表,点击修改注册表来完成这一设置,下面就是Win10电脑蓝牙默认音量100的设置教程介绍,帮助…

【网络安全 | 指纹识别工具】WhatWeb使用详析

前言 WhatWeb 是一款用于识别 Web 应用程序和 Web 服务器的开源工具。它可以识别网站使用的编程语言、Web 框架、Web 服务器软件、Web 应用程序等信息,从而帮助安全测试人员快速了解目标网站的技术特征,发现可能存在的漏洞。 本文将对 WhatWeb 的使用方法…

使用Rust发送邮件

SMTP协议与MIME协议 SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)是一种用于发送和接收电子邮件的互联网标准通信协议。它定义了电子邮件服务器如何相互发送、接收和中继邮件。SMTP 通常用于发送邮件,而邮件的接收通常由 POP&#…