2.认识Dockerfile,如何用Dockerfile构建镜像

本章节原文地址:http://www.czquan.cn/#/resource-detail/35394

1.认识Dockerfile

1.1 Dockerfile是干什么的?

Dockerfile 主要用于docker构建镜像的一个描述文件,描述镜像要做那些工作,比如描述该应用依赖的镜像,设定环境变量,启动参数等信息,执行相关命令等操作。

1.2 实战:Dockerfile部署mysql应用

1、准备工作

创建mysql5.7文件夹,进入该文件夹,创建init文件夹,用于存放mysql部署第一次启动的时候要初始化的数据(可以放入创建一张表或者初始化某些表的数据的sql脚本)
image.png

创建init文件夹,假设想要创建一个first_db数据库和一张first_table表,需要在init文件夹内部写入对应的sql脚本(Tips:这种方式创建数据库和表只能是第一次部署改容器的时候会执行,后面容器重启都不会再次执行该脚本,只用于第一次部署有效)
image.png

比如创建一个init.sql

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for first_table
-- ----------------------------
DROP TABLE IF EXISTS `first_table`;
CREATE TABLE `first_table`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for first_table
-- ----------------------------
DROP TABLE IF EXISTS `first_table`;
CREATE TABLE `first_table`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

image.png

2 、创建Dockerfile文件

From mysql:5.7 #使用mysql5.7 镜像,本地没有该镜像会自动从远程仓库拉取
WORKDIR /docker-entrypoint-initdb.d   # 切换到mysql容器中初始化数据库的目录,这个当容器启动时会自动执行该文件夹下的脚本
ADD ./init/init.sql .  #将当前目录下的init.sql 文件复制 到 容器的当前目录中,当前目录是/docker-entrypoint-initdb.d

image.png

3 、构建镜像

使用Dockerfile构建自定义的mysql镜像5.7,在mysql5.7文件夹内当前目录下执行该命令,./表示当前目录,也可以省略/,会自动找到当前目录下的Dockerfile文件进行执行

docker build   –t  mysql-db   ./

4 、构建好后创建容器

# 构建容器 
# -p 宿主机外网端口:容器内部启动端口
# –e 是设置环境变量,设置MYSQL_ROOT_PASSWORD:mysql初始root账户的密码
docker run  -p 3310:3306   -e  MYSQL_ROOT_PASSWORD=xxx  mysql_sample_db

**Tips:**当然使用docker命令直接创建容器的方式在应用中少见,这样不太易于管理服务的配置,后面市场中大多数使用docker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值