dockerfile 基于centos基础镜像构建mysql

构建准备

准备mysql安装包和boost插件包,自行百度查询下载
mysql国内下载镜像地址(这个下载速度更快):http://uni.mirrors.163.com/mysql/Downloads/MySQL-5.7/
在这里插入图片描述

编写dockerfile

构建文件时注意当前目录与mysql安装包处于同一目录下

FROM centos:7.7.1908
MAINTAINER This is MySQL
#更新yum源安装软件包
RUN yum -y update && yum -y install gcc gcc-c++ make pcre-devel expat-devel perl ncurses ncurses-devel bison cmake autoconf
#解压mysql包
ADD mysql-5.7.37.tar.gz /opt/
COPY mysql_install_db /usr/local/mysql/scripts/
#创建系统用户
RUN useradd -s /sbin/nologin mysql
#解压boost
ADD boost_1_59_0.tar.gz /usr/local/boost
#安装openssl-devel
RUN yum -y install openssl-devel
#进入源码包,执行cmake文件,指定工作目录
WORKDIR /opt/mysql-5.7.37
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DWITH_BOOST=/usr/local/boost \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
#make编译
RUN make && make install
#复制默认配置文件到/etc目录下
#RUN cp -f support-files/my-default.cnf /etc/my.cnf
RUN mkdir -p /usr/local/mysql/
RUN chown -R mysql:mysql /usr/local/mysql/
RUN yum -y install libaio
#配置mysql环境变量
ENV PATH /usr/local/mysql/bin:$PATH
#初始化数据库
RUN /usr/local/mysql/bin/mysqld \
--initialize \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#暴露服务端口
EXPOSE 3306
#启动
RUN cp support-files/mysql.server /etc/init.d/mysqld
RUN chmod 755 /etc/init.d/mysqld
RUN sed -i '/^basedir=/s#basedir=#basedir=/usr/local/mysql#' /etc/init.d/mysqld
RUN sed -i '/^datadir=/s#datadir=#basedir=/home/mysql#' /etc/init.d/mysqld
#建立软链接
RUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]

构建镜像

# -t 名字:版本
docker build -t centos-mysql .

默认密码
在这里插入图片描述

运行容器

sudo docker run --name centos-mysql -dit -p 3388:3306 --privileged centos:mysql /bin/bash
# 进入容器
docker exec -it 容器id /bin/bash

连接数据库

进入容器后执行
mysql -uroot -p

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个简单的Dockerfile,用于在CentOS 9镜像构建MySQL 8.0: ``` FROM centos:9 # 安装MySQL 8.0 RUN yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm && \ yum install -y mysql-community-server && \ yum clean all # 配置MySQL RUN mkdir /docker-entrypoint-initdb.d COPY my.cnf /etc/ COPY init.sql /docker-entrypoint-initdb.d/ # 暴露3306端口 EXPOSE 3306 # 启动MySQL CMD ["mysqld"] ``` 这个Dockerfile包含以下步骤: 1. 基于CentOS 9构建镜像。 2. 安装MySQL 8.0。 3. 配置MySQL,包括复制my.cnf文件和将init.sql文件复制到/docker-entrypoint-initdb.d目录中。 4. 暴露MySQL默认端口3306。 5. 启动MySQL。 你需要在与Dockerfile相同的目录中创建一个my.cnf文件和一个init.sql文件,这些文件将用于配置MySQL和初始化数据库。以下是my.cnf文件的示例内容: ``` [mysqld] default-authentication-plugin=mysql_native_password character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` 以下是init.sql文件的示例内容: ``` CREATE DATABASE mydb; USE mydb; CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50)); INSERT INTO users (name) VALUES ('Alice'), ('Bob'), ('Charlie'); ``` 构建镜像命令: ``` docker build -t mysql8.0:centos9 . ``` 运行容器命令: ``` docker run --name mysql8.0 -p 3306:3306 -d mysql8.0:centos9 ``` 这将创建一个名为“mysql8.0”的容器,并将其映射到本地机器的3306端口。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值