欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用

【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用

2024/12/23 5:48:23 来源:https://blog.csdn.net/PittDing/article/details/144643634  浏览:    关键词:【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用

文章目录

  • 前言
  • 一、运行Docker init生成docker配置文件
  • 二、修改创建镜像的配置文件
    • 1、添加镜像挂载点
  • 三、【拉取镜像】
  • 四、生成Docker 镜像
      • 查看生成的镜像
  • 五、修改Compose配置文件
  • 3、配置Mysql
  • 六、生成Docker容器
  • 七、检查容器创建状态
  • 总结


前言

在window下通过Docker创建mysql容器可方便项目调试,同时便于项目快速部署


一、运行Docker init生成docker配置文件

创建一个新的项目文件夹,并在CMD中打开执行docker init指令;
在弹出的第一个对话框中选择other;
在这里插入图片描述
Docker 配置文件直接创建完成
在这里插入图片描述
可以查看在项目文件夹下创建了4个文件

  • .Dockerignore文件用于Docker配置或将项目文件copy到镜像时忽略的文件;
  • Dockerfile文件用于保存创建Docker镜像时的配置
  • compose.yaml文件用于创建Docker容器时需要的配置文件,如通过镜像创建多容器,配置容器中的mysql配置
  • README.Docker.md文件用于保存创建Docker项目时的帮助信息
    在这里插入图片描述

二、修改创建镜像的配置文件

1、添加镜像挂载点

# 使用最新版本的 MySQL 官方镜像作为基础镜像
FROM mysql:latest # 设置环境变量,指定默认数据库名称
ENV MYSQL_DATABASE=my_db# 挂载数据卷,以便持久化存储 MySQL 数据库文件
VOLUME [ "/var/lib/mysql" ]
VOLUME [ "/var/log/" ]
VOLUME [ "/etc/mysql/conf.d" ]# 暴露 MySQL 默认端口
EXPOSE 3306# 设置容器启动时运行的命令
CMD [ "mysqld" ]

在这里插入图片描述

三、【拉取镜像】

在创建Docker镜像前如果还没有预下载镜像或直接创建镜像失败时可先从网上将镜像先拉取到本地再通过拉取的镜像创建自定义镜像更为方便
在网络通畅的情况下可以方便从官网检查可拉取的目标镜像可用版本号
如果无法拉取镜像则后面也无法直接创建自定义镜像,请查找国内相关代理,并配置镜像源

在这里插入图片描述

在这里插入图片描述

四、生成Docker 镜像

通过Docker build 创建Docker镜像

  • 查看Docker build 指令参数及可选项: Docker build
  • 也可以通过Docker [指令] --help在命令行中查看指令参数及说明

通过Docker build 创建镜像

	docker build -t image_myfirstsql .

查看生成的镜像

通过指令Docker image ls来查看docker中现有的镜像,如果包含刚刚创建的镜像名称,则镜像创建成功

查看镜像
也可以通过Docker desktop来查看镜像列表

在这里插入图片描述

五、修改Compose配置文件

  • 通过Compose文件可以创建多个容器,并分别配置容器的的环境及状态
  • 在容器里可以配置mysql相关设置,如账户及密码、容器以怎么状态运行、主机挂载卷
services:my_local_sql1:image: image_myfirstsql # 使用的 Docker 镜像container_name: my_local_sql1 # 容器名称restart: always # 容器总是重启user: root # 以 root 用户运行environment:MYSQL_ROOT_PASSWORD: 123 # MySQL root 用户的密码MYSQL_DATABASE: my_db # 初始化数据库的名称MYSQL_USER: my_user # MySQL 用户名MYSQL_PASSWORD: 123 # MySQL 用户的密码MYSQL_TZ: Asia/Shanghai # 设置时区TZ: Asia/Shanghai # 设置时区expose:- 3306 # 暴露的端口ports:- 3138:3306 # 映射主机的 3138 端口到容器的 3306 端口volumes:- "C:\\Users\\reedi\\Desktop\\MyFirstDocker\\mysql1\\volume:/var/lib/mysql" # 挂载主机目录到容器- "C:\\Users\\reedi\\Desktop\\MyFirstDocker\\mysql1\\log:/var/log" # 挂载主机目录到容器- "C:\\Users\\reedi\\Desktop\\MyFirstDocker\\mysql_confg\\config:/etc/mysql/conf.d/" # 挂载主机目录到容器my_local_sql2:image: image_myfirstsql # 使用的 Docker 镜像container_name: my_local_sql2 # 容器名称restart: always # 容器总是重启user: root # 以 root 用户运行environment:MYSQL_ROOT_PASSWORD: 123 # MySQL root 用户的密码MYSQL_DATABASE: my_db # 初始化数据库的名称MYSQL_USER: my_user # MySQL 用户名MYSQL_PASSWORD: 123 # MySQL 用户的密码TZ: Asia/Shanghai # 设置时区expose:- 3306 # 暴露的端口ports:- 3139:3306 # 映射主机的 3139 端口到容器的 3306 端口volumes:- "C:\\Users\\reedi\\Desktop\\MyFirstDocker\\mysql2\\volume:/var/lib/mysql" # 挂载主机目录到容器- "C:\\Users\\reedi\\Desktop\\MyFirstDocker\\mysql2\\log:/var/log" # 挂载主机目录到容器- "C:\\Users\\reedi\\Desktop\\MyFirstDocker\\mysql_confg\\config:/etc/mysql/conf.d/" # 挂载主机目录到容器
  • 需要修改变量image:[你创建的镜像],Ports:[你设置的port:容器内port端口]
  • 通过将mysql/conf.d绑定到主机上,即可达到在主机上修改mysql的配置的目的
  • 修改mysql配置后需要重启mysql才能启作用

3、配置Mysql

[mysqld]
log_timestamps=SYSTEM  # 设置日志时间戳为系统时间
character-set-server=utf8mb4  # 设置服务器字符集为utf8mb4
collation-server=utf8mb4_unicode_ci  # 设置服务器排序规则为utf8mb4_unicode_ci
log_error = /var/log/mysql/error.log  # 错误日志文件路径
general_log = 1  # 启用通用查询日志
general_log_file = /var/log/mysql/general.log  # 通用查询日志文件路径
slow_query_log = 1  # 启用慢查询日志
slow_query_log_file = /var/log/mysql/slow.log  # 慢查询日志文件路径[client]
default-character-set=utf8mb4  # 设置客户端默认字符集为utf8mb4[mysql]
default-character-set=utf8mb4  # 设置MySQL命令行工具默认字符集为utf8mb4

六、生成Docker容器

  • 通过Docker-compose up -d来生成容器并生成
  • 通过Docker container ls来查看创建的容器

在这里插入图片描述
也可以通过Docekr desktop查看容器

在这里插入图片描述

七、检查容器创建状态

通过vs中的数据库插件检查数据库状态
在这里插入图片描述

  • 检查mysql连接配置,确信连接正常
  • 如下图确认连接
    在这里插入图片描述
    连接完成后,确信数据库创建成功,可确认配置的my_db库创建成功
    在这里插入图片描述

总结

通过docker 创建mysql容器可以方便进行调试,便于项目快速开发

可通过git 拉取代码库:https://github.com/Pitt-ding/docker_sql.git

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com