Processing math: 0%

dockerfile用yum安装mysql服务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

一、Dockerfile内容如下:

说明:

    本镜像是基于centos 7为基础镜像来构建,centos基础镜像源来自于csphere中,当然你可以修改为其它网站的镜像源也可以(比如docker官方源、网易风巢,时运云、阿里云等),


FROM centos:centos7.1.1503

MAINTAINER ganbing87@126.com


#定义变量

ENV TIME_ZONE "Asia/Shanghai"

ENV TERM xterm

ENV DATA_DIR /var/lib/mysql


#复制宿主机中阿里云的镜像源到镜像中

ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo

ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo


#安装系统相关工具(可根据自己的需求安装相应的工具,觉得不需要的就去掉)

RUN rpm --rebuilddb && \

   yum install -y curl wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man && \

    yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel && \

    yum install -y --enablerepo=epel pwgen python-pip && \


# 安装Mariadb

RUN  yum install -y mariadb mariadb-server && \

         yum clean all


#配置服务器时区

RUN echo "{TIME_ZONE}" > /etc/timezone && ln -sf /usr/share/zoneinfo/{TIME_ZONE} /etc/localtime


#安装supervisord

RUN pip install supervisor

ADD supervisord.conf /etc/supervisord.conf


RUN mkdir -p /etc/supervisor.conf.d && \

    mkdir -p /var/log/supervisor


#复制宿主机mysqld_charset的配置文件到镜像中

ADD mysqld_charset.cnf /etc/my.cnf.d/


#复制宿主机scripts文件到镜像中

COPY scripts /scripts

RUN chmod +x /scripts/start


#暴露3306端口

EXPOSE 3306


#挂载卷

VOLUME ["/var/lib/mysql"]


ENTRYPOINT ["/scripts/start"]


二、附件内容


1、mysqld_charset.cnf

[mysqld]

character_set_server=utf8

character_set_filesystem=utf8

collation-server=utf8_general_ci

init-connect='SET NAMES utf8'

init_connect='SET collation_connection = utf8_general_ci'


2、scripts目录结构和内容

目录结构:

scripts/

├── firstrun

├── firstrun_maria

└── start


【firstrun_maria】内容:

#!/bin/bash


DB_USER=${DB_USER:-admin}

DB_PASS=${DB_PASS:-123456}


MARIADB_NEW=true


#

#  MariaDB setup

#

firstrun_maria() {


# First install mariadb

if [[ ! -d ${DATA_DIR}/mysql ]]; then

    echo "===> MariaDB not install..."


        echo "===> Initializing maria database... "

   mysql_install_db --user=mysql --ldata=${DATA_DIR}

        echo "===> System databases initialized..."


   # Start mariadb

        /usr/bin/mysqld_safe --user mysql > /dev/null 2>&1 &


        echo "===> Waiting for MariaDB to start..."


STA=1

while [[ STA -ne 0 ]]; do

            printf "."

sleep 5

mysql -uroot -e "status" > /dev/null 2>&1

STA=$?

done

        echo "===> Start OK..."


# 1. Create a localhost-only admin account

mysql -u root -e "CREATE USER 'DB_USER'@'%' IDENTIFIED BY 'DB_PASS'"

mysql -u root -e "CREATE USER 'DB_USER'@'localhost' IDENTIFIED BY 'DB_PASS'"

mysql -u root -e "CREATE USER 'DB_USER'@'127.0.0.1' IDENTIFIED BY 'DB_PASS'"

mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'%' WITH GRANT OPTION"

        echo "===> Create localhost completed..."


# shutdown mariadb to wait for supervisor

mysqladmin -u root shutdown


else

        if [[ -e ${DATA_DIR}/mysql.sock ]]; then

            rm -f ${DATA_DIR}/mysql.sock

        fi


        MARIADB_NEW=false


   echo "===> Using an existing volume of MariaDB"

fi

}



【start】内容:

#!/bin/bash

set -e

#

# When Startup Container script

#


if [[ -e /scripts/firstrun ]]; then

# config mariadb

/scripts/firstrun_maria

    rm /scripts/firstrun

else

# Cleanup previous mariadb sockets

if [[ -e ${DATA_DIR}/mysql.sock ]]; then

rm -f ${DATA_DIR}/mysql.sock

fi

fi


exec /usr/bin/mysqld_safe


【aliyun-epel.repo】内容:

[epel]

name=Extra Packages for Enterprise Linux 7 - $basearch

baseurl=http://mirrors.aliyun.com/epel/7/$basearch

#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch

failovermethod=priority

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7


[epel-debuginfo]

name=Extra Packages for Enterprise Linux 7 - $basearch - Debug

baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug

#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch

failovermethod=priority

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

gpgcheck=0


[epel-source]

name=Extra Packages for Enterprise Linux 7 - $basearch - Source

baseurl=http://mirrors.aliyun.com/epel/7/SRPMS

#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch

failovermethod=priority

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

gpgcheck=0


【aliyun-mirror.repo】内容:

# CentOS-Base.repo

#

# The mirror system uses the connecting IP address of the client and the

# update status of each mirror to pick mirrors that are updated to and

# geographically close to the client.  You should use this for CentOS updates

# unless you are manually picking other mirrors.

#

# If the mirrorlist= does not work for you, as a fall back you can try the 

# remarked out baseurl= line instead.

#

#

 

[base]

name=CentOS-$releasever - Base - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/releasever/os/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=os

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

 

#released updates 

[updates]

name=CentOS-$releasever - Updates - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/releasever/updates/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=updates

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

 

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/releasever/extras/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=extras

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

 

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/releasever/centosplus/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=centosplus

gpgcheck=1

enabled=0

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

 

#contrib - packages by Centos Users

[contrib]

name=CentOS-$releasever - Contrib - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/releasever/contrib/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=releasever&arch=basearch&repo=contrib

gpgcheck=1

enabled=0

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7You have new mail in /var/spool/mail/root


【supervisord.conf】内容:

[unix_http_server]

file=/var/run/supervisor.sock ; (the path to the socket file)

chmod=0700              ; socket file mode (default 0700)


[supervisord]

logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)

logfile_maxbytes=50MB

logfile_backup=10

loglevel=info

pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)

nodaemon=true           ; (Start in foreground if true; default false)

minfds=1024                 ; (min. avail startup file descriptors;default 1024)

minprocs=200                ; (min. avail process descriptors;default 200)


[rpcinterface:supervisor]

supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface


[supervisorctl]

serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket


[include]

files = /etc/supervisor.conf.d/*.conf


三、使用dockerfile构建mysql镜像


1、用dockerfile构建mysql镜像

docker build  -t mysql:5.5 .


2、运行mysql容器

docker run -d -p 3306:3306 --name dbserver mysql:5.5 



本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/2048679,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
关系型数据库 MySQL Linux
MySQL8官方YUM仓库使用指南
MySQL 8 是广受欢迎的开源关系数据库管理系统,引入了诸多新特性和性能提升。本文介绍如何在 Linux 上通过 MySQL 官方 YUM 仓库安装和管理 MySQL 8。首先配置 YUM 仓库并安装 MySQL,启动服务后获取临时密码并登录。接着创建数据库与用户,使用 SQL 命令创建表格、插入及查询数据。此方法简便高效,适合快速上手 MySQL 8 的基本操作。
44 13
|
1月前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
137 25
|
1月前
|
监控 Linux
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
66 13
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
|
1月前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
193 42
|
2月前
|
安全 关系型数据库 MySQL
CentOS7仅安装部署MySQL80客户端
通过上述步骤,你可以在CentOS 7上成功安装并配置MySQL 8.0客户端。这个过程确保你能够使用MySQL客户端工具连接和管理远程的MySQL数据库,而不需要在本地安装MySQL服务器。定期更新MySQL客户端可以确保你使用的是最新的功能和安全修复。
311 16
|
3月前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
150 14
|
2月前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
164 7
|
3月前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
417 9
|
4月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
437 0
|
6月前
|
关系型数据库 MySQL Linux
Linux 安装 mysql【使用yum源进行安装】
这篇文章介绍了在Linux系统中使用yum源安装MySQL数据库的步骤,包括配置yum源、安装MySQL服务、启动服务以及修改root用户的默认密码。
Linux 安装 mysql【使用yum源进行安装】