当前位置: 首页 > article >正文

【更新】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


http://www.kler.cn/a/452910.html

相关文章:

  • Redis - Token JWT 概念解析及双token实现分布式session存储实战
  • 实战分享:开发设计文档模版及编写要点
  • 赛博错题本
  • rabbitmq相关使用
  • 使用helm安装canal-server和canal-admin
  • 778-批量删除指定文件夹下指定格式文件(包含子孙文件夹下的)
  • 数字IC后端设计实现十大精华主题分享
  • 【数据科学导论】第一二章·大数据与数据表示与存储
  • 如何不让场景UI受后处理影响
  • k-Means聚类算法 HNUST【数据分析技术】(2025)
  • 宝塔面板跨服务器数据同步教程:双机备份零停机
  • centos7 下使用 Docker Compose
  • Git工作流的最佳实践
  • flask后端开发(1):第一个Flask项目
  • stm32制作CAN适配器5--WinUsb上位机编写
  • SpringBoot 整合Web开放
  • 推动开源数据生态:SeaTunnel ByConity技术沙龙精彩回顾
  • Qt 的信号槽机制详解:之信号槽引发的 Segmentation Fault 问题拆析(上)
  • Linux高级--2.4.1 网络概念(分层、TCP)
  • webpakc介绍
  • 一个从oracle使用spool导出数据到kadb的脚本
  • 基于Springcloud的智能社区服务系统
  • 浅谈Java注解之ResponseBody
  • CentOS7-yum服务器的搭建
  • Pytorch详解 train() 和 eval() 模式会影响Layer Norm吗?(中英双语)
  • 无人机之惯性导航概述!