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

在docker中对MySQL快速部署与初始数据

1.准备工作

将已经准备好的Dockerfile文件与数据库初始化脚本init.sql放到 /usr/local目录中。

Dockerfile文件内容:

FROM mysql:5.7
WORKDIR /docker-entrypoint-initdb.d
ADD init.sql .

 FROM 代表来自mysql5.7的镜像,作为基准镜像。

WORKDIR设置工作目录,“docker-entrypoint-initdb.d”目录是MySQL5.7官方定义的执行SQL的目录,只有把脚本放到这个目录下,在启动镜像时,脚本才会被执行。

ADD是拷贝文件,把自己写的初始化脚本init.sql拷贝到WORKDIR工作目录中,让docker来执行该脚本。

init.sql文件内容:

create database `docker_mysql`;
 
use docker_mysql;
 
-- 建表
DROP TABLE IF EXISTS `user`;
 
CREATE TABLE `user` (
 `id` bigint(20) NOT NULL,
 `created_at` bigint(40) DEFAULT NULL,
 `last_modified` bigint(40) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 `first_name` varchar(255) DEFAULT NULL,
 `last_name` varchar(255) DEFAULT NULL,
 `username` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
-- 插入数据
INSERT INTO `user` (`id`, `created_at`, `last_modified`, `email`, `first_name`, `last_name`, `username`)
VALUES
  (0,1490257904,1490257904,'john.doe@example.com','John','Doe','user');

docker官方网址:

https://hub.docker.com/

搜索MySQL,可以看到官方支持的版本,根据说明可以安装不同版本的MySQL。

2.拉取docker镜像

docker pull mysql:5.7

使用docker images命令,查看镜像是否拉取完成。 

已经获取成功。

3.使用Dockerfile文件创建自定义镜像

将路径切换到Dockerflie所在的目录中,执行创建镜像的命令。

docker build -t sampledb .

sampledb是数据库镜像的名称,后面的点代表当前目录中的Dockerfile文件。

4.运行镜像,生成容器。

docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root sampledb

3310:3306表示用3310端口映射到docker内部的3306端口。

-e 表示设置环境常量,环境常量MYSQL_ROOT_PASSWORD,是MySQL5.7定义的,用来设置MySQL中root的初始密码,这里把初始密码设置为root。

sampledb是前面创建的镜像的名称。

5.使用navicat连接到MySQL数据库

可以看到定义的表和数据都在里面。

到此为止,在docker中基于MySQL5.7的官方镜像,自行创建了MySQL镜像,并初始化了数据库docker_mysql。


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

相关文章:

  • 2025差旅平台推荐:一体化降本30%
  • mac m2 安装 docker
  • Lua迭代器如何使用?
  • 改投论文时如何重构
  • VMware安装配置
  • CSS系列(42)-- Backdrop Filter详解
  • 游戏引擎学习第67天
  • Claude 官方发布《构建高效的 Agents 指南》全文翻译版,附中英文 PDF 下载
  • 一个最简单的ios程序(object_c)的编写
  • 2024年中国新能源汽车用车发展怎么样 PaperGPT(二)
  • 基于Oauth2的SSO单点登录---后端
  • C++ 设计模式:原型模式(Prototype Pattern)
  • Slate文档编辑器-Decorator装饰器渲染调度
  • uniapp:编译微信、h5都正常的,编译钉钉小程序无法找到页面
  • Flutter富文本实现学习
  • --gdb
  • QWEN2 模型架构配置;GGUF的概念:实现量化存储
  • hadoop搭建
  • springboot配置oracle+达梦数据库多数据源配置并动态切换
  • Day10补代码随想录 理论基础|232.用栈实现队列|225.用队列实现栈|20.有效的括号|1047.删除字符串中的所有相邻重复项
  • 工业串行总线中的“安全守护者”,隔离接口芯片
  • 「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏
  • Mysql数据库Redo日志和Undo日志的理解
  • wx011基于springboot+vue+uniapp的机电公司管理信息系统
  • FFmpeg 中 examples 使用教程
  • 软件需求分析期末知识点整理