如何 build 一个 mysql_client 镜像

如何 build 一个 mysql_client 镜像

本文旨在构建一个 mysql_client 镜像用于项目数据库初始化工作,用于解耦项目

基础镜像如何选取

对于这种工具类的镜像而言,基础镜像的要求是比较低的,故满足基础功能即可。
对于操作系统基础镜像而言,主要分为:

  • busybox
    官网:https://www.busybox.net/
  • alpine
    官网:https://www.alpinelinux.org/
  • centos
    官网:https://www.centos.org/
  • ubuntu
    官网:http://www.ubuntu.com/
  • Debian
    官网:https://hub.docker.com/_/debian/

这里选取的是 alpine 轻量级的基础镜像,包管理工具为 apk,各种镜像的优缺点就不一一对比了,感兴趣的可以自行进行搜索。

构建思路

  • 基础镜像的选取
    因本文的开发环境为 centos 7.2 amd64 架构,故指定了 platform, 大家可根据自己的环境指定
FROM --platform=linux/amd64 alpine:3.4
  • 国内 apk 镜像源的切换 && mysql-client 下载
RUN echo -e 'https://mirrors.aliyun.com/alpine/v3.4/main/\nhttps://mirrors.aliyun.com/alpine/v3.4/community/' > /etc/apk/repositories \
    && apk add --update mysql-client \
    && rm -rf /var/cache/apk/* && mkdir /db
  • 挂载数据库文件和运行脚本
WORKDIR /db

COPY ./db/schema.sql ./db/db_init.sh /db/
  • CMD 运行
CMD ["sh", "./db_init.sh"]

完整的 dockerfile 为

FROM --platform=linux/amd64 alpine:3.4

MAINTAINER tyronemaxi

RUN echo -e 'https://mirrors.aliyun.com/alpine/v3.4/main/\nhttps://mirrors.aliyun.com/alpine/v3.4/community/' > /etc/apk/repositories \
    && apk add --update mysql-client && rm -rf /var/cache/apk/* && mkdir /db

WORKDIR /db

COPY ./db/schema.sql ./db/db_init.sh /db/


CMD ["sh", "./db_init.sh"]

db_init 脚本

#!/bin/sh

set -ex

# 配置环境变量, 需要配置 mysql 信息
export MYSQL_HOST=msyql_server
export MYSQL_USER=root
export MYSQL_PASSWORD=123456

echo "初始化数据库 ..."

mysql -h"$MYSQL_HOST" -u"${MYSQL_USER}" -p"${MYSQL_PASSWORD}" < ./schema.sql

echo "doc_assistant 数据库初始化完成"

schema.sql

# 创建数据库
CREATE DATABASE IF NOT EXISTS you_own_database;

# 创建数据库
USE you_own_database;

docker build

docker build -t mysql_client_alpine:v0.1 -f mysql_client.Dockerfile .

使用

docker run -it --rm --name mysql_client_alphine mysql_client:v0.1

镜像地址

https://hub.docker.com/repository/docker/tyronextian/mysql_client

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值