文章目录
- 前言
- [一、运行Docker init生成docker配置文件](#一、运行Docker init生成docker配置文件)
- 二、修改创建镜像的配置文件
- 三、【拉取镜像】
- [四、生成Docker 镜像](#四、生成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" ]
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7ec51551c30b49419dffd91d794cd0cb.png)
## 三、【拉取镜像】
> 在创建Docker镜像前如果还没有预下载镜像或直接创建镜像失败时可先从网上将镜像先拉取到本地再通过拉取的镜像创建自定义镜像更为方便
>
> 在网络通畅的情况下可以方便从官网检查可拉取的目标镜像可用版本号
>
> 如果无法拉取镜像则后面也无法直接创建自定义镜像,请查找国内相关代理,并配置镜像源
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e1ccbdef43554892a5eacc617f448848.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/140df3f498c14771bdc96aad133a860f.png)
## 四、生成Docker 镜像
通过Docker build 创建Docker镜像
> * 查看Docker build 指令参数及可选项: [Docker build](https://docs.docker.com/reference/cli/docker/build-legacy/)
> * 也可以通过Docker \[指令\] --help在命令行中查看指令参数及说明
通过Docker build 创建镜像
docker build -t image_myfirstsql .
#### 查看生成的镜像
通过指令Docker image ls来查看docker中现有的镜像,如果包含刚刚创建的镜像名称,则镜像创建成功
![查看镜像](https://i-blog.csdnimg.cn/direct/5d79357282e84d34bb7392dbb426686c.png)
也可以通过Docker desktop来查看镜像列表
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/756f70fe5e37414e825763e769883f9f.png)
## 五、修改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来查看创建的容器
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4f908464caae447791d089a6c518b23e.png)
也可以通过Docekr desktop查看容器
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/696688f0abc24c748864805ca6efbaed.png)
## 七、检查容器创建状态
通过vs中的数据库插件检查数据库状态
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/174773bcfe99406385ff35670f9e3568.png)
* 检查mysql连接配置,确信连接正常
* 如下图确认连接
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ab641a81501443998fdc973524718ba5.png)
连接完成后,确信数据库创建成功,可确认配置的my_db库创建成功
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1f3de67fee334740a8ca933891b59093.png)
*** ** * ** ***
## 总结
通过docker 创建mysql容器可以方便进行调试,便于项目快速开发
> 可通过git 拉取代码库:https://github.com/Pitt-ding/docker_sql.git