文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

dockerfile使用记录:在生产中使用dockerfile构建mysql详细教学加案例

2023-09-03 16:55

关注

dockerfile使用记录:在生产中使用dockerfile构建mysql详细教学加案例

1.1 Dockerfile是用于构建Docker镜像的一种文本文件,其中包含指令和参数。MySQL的Dockerfile主要用于构建MySQL服务的镜像,以下是一个基本的MySQL Dockerfile示例:

# 使用官方MySQL镜像FROM mysql:latest# 设置root用户的密码ENV MYSQL_ROOT_PASSWORD=123456# 设置字符集ENV LANG=C.UTF-8# 将自定义配置文件复制到镜像中COPY my.cnf /etc/mysql/my.cnf# 将初始化SQL脚本复制到镜像中COPY init.sql /docker-entrypoint-initdb.d/# 持久化数据卷VOLUME /var/lib/mysql

该Dockerfile主要有以下几个部分:

FROM mysql:latest:表示该镜像是基于官方MySQL镜像构建的,使用latest标签表示使用最新版本。
ENV MYSQL_ROOT_PASSWORD=123456:设置MySQL的root用户密码为123456,这是一个环境变量。
ENV LANG=C.UTF-8:设置字符集为UTF-8,确保正确的字符处理。
COPY my.cnf /etc/mysql/my.cnf:将自定义的MySQL配置文件my.cnf复制到镜像中的/etc/mysql/my.cnf路径下。
COPY init.sql /docker-entrypoint-initdb.d/:将初始化SQL脚本init.sql复制到镜像中的/docker-entrypoint-initdb.d/路径下,该脚本将在容器启动时自动执行,用于初始化数据库。
VOLUME /var/lib/mysql:将MySQL数据目录挂载到宿主机上的/var/lib/mysql目录中,以便将数据存储在宿主机的持久化数据卷中。

1.2 编写配置文件和SQL脚本

在本地创建一个my.cnf配置文件,用于配置MySQL服务的参数。例如,以下是一个简单的my.cnf文件:

[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_unicode_cimax_connections=100

1.3 在本地创建一个init.sql文件,用于初始化数据库。例如,以下是一个简单的init.sql文件:

通常情况下,需要自己编写init.sql文件,以便在Docker启动时创建所需的数据库和表,插入数据等。例如,以下是一个简单的init.sql示例:

CREATE DATABASE mydb;USE mydb;CREATE TABLE users (  id INT(11) NOT NULL AUTO_INCREMENT,  name VARCHAR(50) NOT NULL,  email VARCHAR(50) NOT NULL,  PRIMARY KEY (id));INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane@example.com');

该脚本将创建一个名为mydb的数据库,并在其中创建一个名为users的表格,并插入两条记录。
可以根据实际需求编写init.sql文件,以便在Docker镜像启动时自动初始化数据库。在Dockerfile中,可以使用COPY init.sql /docker-entrypoint-initdb.d/命令将该脚本复制到镜像中的/docker-entrypoint-initdb.d/目录中,以便在容器启动时自动执行。

1.4 构建Docker镜像

在命令行中进入Dockerfile所在目录,执行以下命令构建Docker镜像:

docker build -t my-mysql .

该命令会在当前目录下查找Dockerfile文件,并构建名为my-mysql的Docker镜像。

1.5 运行Docker容器

在命令行中执行以下命令运行Docker容器:

docker run -d -p 3306:3306 --name my-mysql -v /path/to/data:/var/lib/mysql my-mysql

该命令将启动一个名为my-mysql的Docker容器,并将容器内部的MySQL服务的3306端口映射到宿主机的3306端口上。-v /path/to/data:/var/lib/mysql表示将MySQL数据目录挂载到宿主机上的/path/to/data目录中,实现数据持久化。

来源地址:https://blog.csdn.net/Liu__sir__/article/details/130643737

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯