使用 Docker 部署 MySQL 数据库的两种方法

embedded/2024/10/21 12:36:54/

引言

在现代软件开发中,MySQL 是一种流行的关系数据库管理系统,因其可靠性和易用性受到广泛欢迎。通过 Docker,可以快速、便捷地部署和管理 MySQL 数据库实例。本文将介绍两种通过 Docker 部署 MySQL 的方法:使用 Docker CLI 命令和使用 Docker Compose。


第一部分:通过 Docker CLI 命令部署 MySQL

1. 安装 Docker

确保您的系统中已安装 Docker。若未安装,请参考 Docker 官方文档 进行安装。

2. 拉取 MySQL 镜像

首先,使用以下命令从 Docker Hub 拉取 MySQL 8.0 镜像:

docker pull mysql:8.0
3. 启动 MySQL 容器

接下来,使用以下命令启动 MySQL 容器:

docker run -d \
--name mysql-8.0 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=my_database \
-e MYSQL_USER=run \
-e MYSQL_PASSWORD=123456 \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_bin \
--lower_case_table_names=1
参数说明:
  • -d:以后台模式运行容器。
  • --name mysql-8.0:指定容器名称为 mysql-8.0
  • -e:设置环境变量,配置 MySQL 的 root 密码、默认数据库名称、用户及其密码。
  • -p 3306:3306:将主机的 3306 端口映射到容器的 3306 端口,以便外部访问数据库
  • -v mysql-data:/var/lib/mysql:创建持久化卷,将容器中的数据存储在主机上,确保数据不丢失。
  • 最后,指定了字符集和排序规则以优化数据库支持。
4. 验证 MySQL 运行状态

运行以下命令检查容器是否已成功启动:

docker ps

若容器列表中出现 mysql-8.0,则表明部署成功。

5. 进入 MySQL 容器

您可以使用以下命令连接到 MySQL 数据库

docker exec -it mysql-8.0 mysql -uroot -p123456

第二部分:通过 Docker Compose 部署 MySQL

Docker Compose 允许用户通过定义一个 docker-compose.yml 文件,方便地管理和启动多个服务。以下是通过 Docker Compose 部署 MySQL 的步骤。
在这里插入图片描述

dockercomposeyml__63">1. 创建 docker-compose.yml 文件

在您的工作目录下,创建一个名为 docker-compose.yml 的文件,并输入以下内容:

version: '3.8'
services:mysql:image: mysql:8.0container_name: mysql-8.0environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: my_databaseMYSQL_USER: runMYSQL_PASSWORD: 123456ports:- "3306:3306"volumes:- mysql-data:/var/lib/mysqlcommand:- mysqld- --character-set-server=utf8mb4- --collation-server=utf8mb4_bin- --lower_case_table_names=1networks:- mysql-networkvolumes:mysql-data:networks:mysql-network:driver: bridge
dockercomposeyml__97">2. docker-compose.yml 文件逐行解析
  • version: '3.8'
    指定 Docker Compose 文件的版本,3.8 适合大多数用户。

  • services:
    定义在 Docker 中运行的服务。

  • mysql:
    指定服务的名称,表示 MySQL 数据库服务。

  • image: mysql:8.0
    使用 MySQL 8.0 镜像,如果本地没有此镜像,Docker 会自动从 Docker Hub 下载。

  • container_name: mysql-8.0
    设置容器的名称,便于管理和识别。

  • environment:
    设置 MySQL 的环境变量:

    • MYSQL_ROOT_PASSWORD:root 用户的密码。
    • MYSQL_DATABASE:初始化时创建的数据库名称。
    • MYSQL_USERMYSQL_PASSWORD:创建一个新用户及其密码。
  • ports:
    将主机的 3306 端口映射到容器的 3306 端口,以便外部访问数据库

  • volumes:
    将主机上的 mysql-data 卷挂载到容器的 /var/lib/mysql 目录,确保数据的持久性。

  • command:
    指定 MySQL 启动时的命令参数,设置字符集和排序规则,以优化数据库的支持。

  • networks:
    定义容器使用的网络,mysql-network 允许容器之间进行通信。

  • volumes:
    创建一个名为 mysql-data 的卷,用于数据持久化。

  • networks:
    创建一个名为 mysql-network 的桥接网络,便于容器间的互联。

3. 启动 MySQL 服务

docker-compose.yml 文件所在的目录,执行以下命令启动服务:

docker-compose up -d
4. 验证服务状态

使用以下命令查看运行中的容器:

docker-compose ps

确保 mysql-8.0 容器正在运行。

5. 进入 MySQL 容器

使用以下命令访问 MySQL 数据库

docker exec -it mysql-8.0 mysql -uroot -p123456
6. 停止和移除容器

要停止并删除容器,可以使用以下命令:

docker-compose down

MySQL:8.0镜像下载地址

https://download.csdn.net/download/run65536/89891887

总结

本文介绍了通过两种方法在 Docker 中部署 MySQL 数据库:通过 Docker CLI 命令和通过 Docker Compose 文件。每种方法都有其独特的优点,您可以根据项目需求和个人偏好选择适合的方式。


dockercomposeyml__173">附:完整的 docker-compose.yml 文件内容

version: '3.8'
services:mysql:image: mysql:8.0container_name: mysql-8.0environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: my_databaseMYSQL_USER: runMYSQL_PASSWORD: 123456ports:- "3306:3306"volumes:- mysql-data:/var/lib/mysqlcommand:- mysqld- --character-set-server=utf8mb4- --collation-server=utf8mb4_bin- --lower_case_table_names=1networks:- mysql-networkvolumes:mysql-data:networks:mysql-network:driver: bridge

通过以上步骤,您可以快速在 Docker 中部署 MySQL 数据库,确保开发环境的灵活性和一致性。


http://www.ppmy.cn/embedded/129273.html

相关文章

Scala trait

一.trait 基本使用 idea实例 二.实现单个特质 三.实现多个特质 idea实例 四.特质成员的处理方式

tensorflow c++ api + windwos + vs部署 详细避坑

文章目录 前言一、安装MSYS2二、选择tensorflow的版本三、安装Bazel四、配置一个anconda的tensorflow环境五、生成dll,lib,include六、在vs2019中配置项目七、测试并针对性修补问题 前言 不能使用vs2022配置tensorflow c api,即使要安装 2.10.0版本,也尽…

【乾坤新增一个子应用】

乾坤框架是一个基于微前端的解决方案,可以实现不同子应用的独立开发、独立部署和独立运行。下面是新增一个子应用的完整步骤: 创建一个新的子应用项目 首先,在终端中使用命令行工具创建一个新的子应用项目,可以选择使用任何前端框…

大模型时代,云原生数据底座的创新和实践

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 大模型毫无疑问是当前技术发展的热点,成为大家默认的提升生产力工具。 但是,大模型训练主要使用互联网上的公开数据为主,没有企业内部的数据,所以大模型本质上自带的都…

使用 SSH 连接 GitLab 的常见问题及解决方案

使用 SSH 连接 GitLab 的常见问题及解决方案 在使用 SSH 连接到 GitLab 服务器时,可能会遇到类似于以下的错误信息: git192.168.xx.xxx: Permission denied (publickey).这个错误通常表示 SSH 无法验证你的公钥,导致无法访问 GitLab 仓库。…

Spring Boot驱动的在线考试系统:JavaWeb技术实战

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理基于JavaWeb技术的在线考试系统设计与实现…

PROFINET开发或EtherNet/IP开发嵌入式板有用于工业称重秤

这是一个真实案例,不过客户选择不透露其品牌名称。稳联技术的嵌入式解决方案助力工业称重设备制造商连接至任意工业网络。多网络连接使得称重设备能够轻松接入不同的控制系统,进而加快产品的上市时间。 我们找到了稳联技术的解决方案。他们成熟的技术与专…

10.16工作笔记

要做的事 过一遍,完善代码 修改度数据的那几个函数(读取因子的时候读了多因子,但是不能用) 加一个函数,把所有读数据的都加进去 写参数平原,考虑多参数情况考虑多因子怎么办 14计算顺序 period_df read_coin_1得到所有币&…