【Docker-Dev】Mac M2 搭建docker mysql

这篇具有很好参考价值的文章主要介绍了【Docker-Dev】Mac M2 搭建docker mysql。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

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

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

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

为了使得代理生效,由于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-Dev】Mac M2 搭建docker mysql,Java,docker,mysql,M2,Mac,docker-compose

注意,这里是提前下载好了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命令启动
【Docker-Dev】Mac M2 搭建docker mysql,Java,docker,mysql,M2,Mac,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

【Docker-Dev】Mac M2 搭建docker mysql,Java,docker,mysql,M2,Mac,docker-compose

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

然后打开浏览器,http://localhost:8101.
【Docker-Dev】Mac M2 搭建docker mysql,Java,docker,mysql,M2,Mac,docker-compose

这里是由于我登录过,所以左侧保留有信息
【Docker-Dev】Mac M2 搭建docker mysql,Java,docker,mysql,M2,Mac,docker-compose

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

docker compose stop

5、总结

这篇文章主要是我安装mysql的一些笔记,希望对其他人有帮助文章来源地址https://www.toymoban.com/news/detail-767543.html

到了这里,关于【Docker-Dev】Mac M2 搭建docker mysql的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac M系列芯片(M1/M2)安装Docker

    通过Homebrew安装 安装完成后,打开Docker会提示CPU架构不匹配,无法正常启动Docker 在Docker官网下载M芯片适用的.dmg安装包  安装完成后即可正常启动 配置国内镜像源 点击菜单栏的Docker图标,打开Settings... Settings...界面如下,切换到Docker Engine,增加镜像源配置(注意JSON格式),

    2024年02月16日
    浏览(53)
  • 基于 Docker 的 MySQL 主从复制搭建(Mac M1版本)

    系统:Macbook M1 镜像版本:mysql:5.7 如果是要查 slave 连接不上 master 的问题,可以直接跳到文章末尾踩坑处 准备工作 拉取镜像 本地数据卷挂载 因为mysql不挂载的话,重启丢失数据,所以在本地创建三个空的文件夹 conf、data、log 即可 部署mysql_master(主) 运行master容器 不加 -

    2024年02月10日
    浏览(44)
  • 【Mac开发环境搭建】安装HomeBrew、HomeBrew安装Docker、Docker安装Mysql5.7和8

    科大源安装 卸载 安装包 卸载包 查询可用的包 更新所有包 更新指定包 查看已经安装的包 查看包的信息 清理包 查看brew的版本 更新brew 获取brew的帮助信息 安装完成之后,双击Docker图标即可运行Docker Docker启动之后,就可以使用Docker相关命令 镜像相关 查看已经拉取的所有镜像

    2024年02月04日
    浏览(44)
  • docker-compose安装和使用(自启、redis、mysql、rabbitmq、activemq、es、nginx、java应用)

    1.在线安装docker-compose: 参考官网:https://docs.docker.com/compose/install/other/ docker-compose安装及简单入门 [Docker] docker-compose使用教程 Docker系列教程22-docker-compose.yml常用命令 2、离线安装docker-compose: 参考:Docker - 离线安装 docker-compose(以CentOS系统为例) (1)首先访问 docker-compose 的

    2024年02月05日
    浏览(55)
  • 使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

    image 镜像名称,可去镜像市场查找自己需要的 hostname 容器内服务名 container_name 容器名 volumes 可以把自己电脑的路径映射到容器中的文件夹中 networks 写同一个网络可以让容器之间进行通信 启动 在项目根目录的命令行中输入 docker-compose up 停止 在项目根目录的命令行中输入 d

    2024年02月12日
    浏览(56)
  • Mac M系列芯片(M1/M2)Docker安装Nacos Server单机版

    本文基于Nacos2.1.2进行说明 DockerHub镜像仓库-nacos镜像 可以看到只有-slim版本有arm64版本,因此我们用v2.1.2-slim这个版本(笔者亲测v2.1.2的linux/amd64版本在M系列芯片上不可用,nacos启动会报错)。 注意版本是Tags前面有个v,不是2.1.2;Docker会根据CPU架构拉取对应的架构版本。 查看

    2024年02月05日
    浏览(59)
  • mac 安装docker-compose报错,/usr/local/bin/docker-compose: line 1: {error:Document not found}:

    问题: mac 安装docker-compose报错 {error:Document not found}: command not found 解决方案: Mac 的 Docker 桌面版和 Docker Toolbox 已经包括 Compose 和其他 Docker 应用程序,因此 Mac 用户不需要单独安装 Compose。 docker-compose 指令 改成 docker compose 即可 例如

    2024年02月11日
    浏览(50)
  • Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令

    此处列举了docker及docker-compose的常用命令,一方面可以做个了解,另一方面可以在需要的时候进行查阅。不一定要强行记忆,用多了就熟悉了。 1.1、镜像常用命令 1)列举镜像 2)删除镜像 3)使用repositories:tag进行删除 1.2、容器常用命令 1)列举所有容器 2)列举正在运行的容

    2024年03月27日
    浏览(49)
  • 使用docker-compose搭建gitlab

    使用Docker搭建GitLab带来的好处。它简化了部署过程,将安装和配置整合为一个容器,并通过简单的命令即可启动和运行GitLab实例。Docker的隔离和容器化特性确保了GitLab与其依赖的软件环境的隔离,避免了冲突问题。此外,Docker的可移植性使得GitLab可以在不同平台和环境中运行

    2024年01月18日
    浏览(51)
  • docker-compose搭建redis服务

    2024年02月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包