国产化 ARM 环境mysql-mariadb 部署

复制代码
version: '3.1'
services:
  db:
    image: mariadb:mysql-5.7
    container_name: mariadb
    command: ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci","--default-authentication-plugin=mysql_native_password"] 
    restart: always
    volumes:
      - ./data:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      MYSQL_ROOT_PASSWORD: 111111
      MYSQL_USER: malone
      MYSQL_PASSWORD : 111111
      TZ: Asia/Shanghai
    ports:
      - 3306:3306    

这段 docker-compose.yaml 文件定义了一个 mariadb 服务,使用 MariaDB 镜像并进行了一些配置。以下是逐行解释:

yaml 复制代码
version: '3.1'
  • 定义 Docker Compose 文件的版本为 3.1。这个版本支持定义多个服务,并允许使用一些高级特性。
yaml 复制代码
services:
  • services 是 Compose 文件中的关键字,表示所有的服务都定义在这里。在该文件中只定义了一个服务:db。
yaml 复制代码
  db:
  • 这里定义了一个服务,名为 db,代表 MariaDB 数据库服务。
yaml 复制代码
    image: mariadb:mysql-5.7
  • image 指定了 Docker 容器的镜像。这里使用的是 mariadb:mysql-5.7,表示使用 MariaDB 5.7 版本的镜像。如果没有本地镜像,Docker 会从 Docker Hub 拉取。
yaml 复制代码
    container_name: mariadb
  • container_name 设置了容器的名称为 mariadb,这意味着在 Docker 中查看容器时,容器将以此名称出现。
yaml 复制代码
    command: ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci","--default-authentication-plugin=mysql_native_password"]
  • command 用于覆盖容器启动时默认执行的命令。这里指定了 mysqld 命令及一些参数:
    • --character-set-server=utf8mb4 设置服务器的字符集为 utf8mb4,以支持更多字符(包括表情符号等)。
    • --collation-server=utf8mb4_unicode_ci 设置字符集的排序规则。
    • --default-authentication-plugin=mysql_native_password 使用 mysql_native_password 插件进行身份验证,以兼容一些较老的客户端。
yaml 复制代码
    restart: always
  • restart: always 表示容器如果停止或崩溃,会自动重启,确保服务持续运行。
yaml 复制代码
    volumes:
      - ./data:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
  • volumes 用于将主机的目录或文件挂载到容器内:
    • ./data:/var/lib/mysql 将主机当前目录下的 data 文件夹挂载到容器中的 /var/lib/mysql,这是 MariaDB 存储数据库数据的位置。这样数据库数据就保存在宿主机上,即使容器删除也不会丢失。
    • /etc/localtime:/etc/localtime:ro 将宿主机的本地时间设置文件挂载到容器中,确保容器与宿主机的时间一致。
yaml 复制代码
    environment:
      MYSQL_ROOT_PASSWORD: 111111
      MYSQL_USER: malone
      MYSQL_PASSWORD : 111111
      TZ: Asia/Shanghai
  • environment 用于设置环境变量:
    • MYSQL_ROOT_PASSWORD: 111111 设置 MariaDB 的 root 用户密码为 111111。
    • MYSQL_USER: malone 创建一个名为 malone 的普通用户。
    • MYSQL_PASSWORD: 111111 设置用户 malone 的密码为 111111。
    • TZ: Asia/Shanghai 设置容器的时区为 Asia/Shanghai。
yaml 复制代码
    ports:
      - 3306:3306
  • ports 映射容器的端口到宿主机的端口。这里将容器的 3306 端口映射到宿主机的 3306 端口,这样宿主机就可以通过 localhost:3306 访问 MariaDB 数据库。

总结:

  • 该配置文件使用 Docker Compose 来启动一个 MariaDB 5.7 的容器,配置了时区、字符集、数据卷挂载等内容。容器将运行 MariaDB 数据库并确保数据库服务始终保持运行。通过映射的端口,可以从宿主机访问数据库。
相关推荐
筑梦之路18 分钟前
docker-compose方式部署kafka集群(Kraft方式)——筑梦之路
docker·容器·kafka
JavaPub-rodert1 小时前
Docker 镜像地址总失效?基于 DockerHub 项目用 GitHub Actions 做一个自动检测状态页
docker·容器·github
一条破秋裤1 小时前
Jetson 内核模块编译与板端验证记录
arm开发
天衍四九-1 小时前
Docker 进阶实战系列(一):容器镜像安全,最小镜像与非 Root 运行
安全·docker·eureka
天衍四九-1 小时前
Docker进阶实战系列(二):容器日志深度治理|驱动配置、自动切割、磁盘爆满彻底解决
docker·容器·eureka
aixingkong9212 小时前
Agentic AI时代的处理器算力需求和Nvidia、ARM、AMD等大厂的回答
arm开发·人工智能
sbjdhjd2 小时前
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
网络安全·docker·云原生·容器·kubernetes·云计算·云安全
溪语流沙2 小时前
【Web全栈进阶】PostgreSQL上手:Docker跑库 + 把早报站从SQLite迁过去
前端·docker·postgresql
FYKJ_20103 小时前
springboot心理健康管理系统86254-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
做运维的阿瑞3 小时前
MYSQL从语义到执行计划:UNION、EXISTS、IN 的深度辨析
数据库·sql·mysql