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

news/2024/12/23 22:24:50 标签: docker, windows, mysql

文章目录

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


前言

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


docker_15">一、运行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.niftyadmin.cn/n/5797071.html

相关文章

使用Electron获取用户信息,监听程序打开,用户退出连接关闭程序【全代码,有图】

使用Electron获取用户信息,监听程序打开,用户退出连接关闭程序【全代码,有图】 效果图 如有其他操作可在代码中自己添加 main.js const { app, BrowserWindow, ipcMain } require(electron); const path require(node:path); const os…

【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式,同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向,为读者提供从数据组织、预处理、加载到可视化展示的完整过程,并为后续模型训练打下基础。 前言 在计算机视觉的深…

基于单片机的步进电机控制系统的设计研究

摘要 :随着我国社会经济结构的不断优化与升级,加工制造工业得到了长足发展 。 加工制造工业体系的日益成熟,使得步进电机应用的范围越来越广泛,逐渐成为工业生产与社会生活中必不可少的工业组成。 因此如何提升步进电机的性能、 实现步进电机控制系统的科学设计,就成为现阶…

Docker 部署机器学习模型

1.编写机器学习代码 (1)新建一个 mlmodel.py import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sk…

127、SQLSERVE中union all 和union的使用场景

使用:在 SQL Server 中,UNION 和 UNION ALL 是用于合并两个或多个 SELECT 查询结果的操作符。两者区别union all 会去重,union 不会去重例子: 两张表:stu:stu_id,name emplyee:em_id,name 需求1:sql实…

设计模式中单例模式中懒汉模式的问题

设计模式中单例模式中懒汉模式的问题 今天在项目中遇到了要使用懒汉模式的问题。百度之后,发现还有很多细节是自己之前没有见过的。于是记录一下。下面是在AI助手中的说明。 单例模式的懒汉模式(Lazy Singleton)是在需要时才创建实例&#…

深入了解Java在人工智能领域的最新应用

Java不仅是传统企业级开发的主要语言,在人工智能(AI)领域也表现出强大的适应能力。随着AI技术的飞速发展,Java在机器学习框架、大数据分析以及深度学习中发挥了重要作用。本文将重点介绍Java在AI领域的最新进展与实际应用场景。 …

初始化全部推断的寄存器、 SRL 和存储器

初始化全部推断的寄存器、 SRL 和存储器 GSR 网络用于根据 HDL 代码中规定的初始值完成所有寄存器的初始化。如果没有设定初始值,综合工具会自行将初始 状态赋值为 0 或 1 。除少数情况,比如 one-hot 状态机编码, Vivado 综合工具一…