使用dockerfile centos制作mysql源码安装
时间: 2023-11-27 16:08:31 浏览: 40
以下是Dockerfile的示例,用于制作MySQL的源代码安装:
```
# 基于CentOS 7的基础镜像
FROM centos:7
# 安装MySQL的依赖
RUN yum update -y && yum install -y gcc gcc-c++ cmake make bison-devel ncurses-devel openssl-devel
# 下载MySQL的源代码
ENV MYSQL_VERSION 8.0.26
RUN cd /usr/local/src && \
curl -LO https://dev.mysql.com/get/Downloads/MySQL-${MYSQL_VERSION}/mysql-${MYSQL_VERSION}.tar.gz && \
tar -xzvf mysql-${MYSQL_VERSION}.tar.gz && \
rm -f mysql-${MYSQL_VERSION}.tar.gz
# 编译和安装MySQL
RUN cd /usr/local/src/mysql-${MYSQL_VERSION} && \
mkdir build && cd build && \
cmake .. && \
make && \
make install
# 添加MySQL用户和组
RUN groupadd mysql && \
useradd -r -g mysql -s /bin/false mysql
# 拷贝MySQL的配置文件
COPY my.cnf /etc/my.cnf
# 拷贝MySQL启动脚本
COPY start.sh /start.sh
# 修改脚本权限
RUN chmod +x /start.sh
# 暴露MySQL的端口
EXPOSE 3306
# 启动MySQL
CMD ["/start.sh"]
```
在Dockerfile所在的目录中创建一个名为 `my.cnf` 的文件,包含MySQL的配置,例如:
```
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
```
在Dockerfile所在的目录中创建一个名为 `start.sh` 的文件,包含启动MySQL的脚本,例如:
```
#!/bin/sh
# 初始化MySQL数据目录
mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
# 启动MySQL
/usr/local/mysql/bin/mysqld --user=mysql --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock --port=3306 --log-error=/var/log/mysql/error.log --log-bin=/var/log/mysql/mysql-bin.log --server-id=1 --binlog-format=ROW --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
```
在Dockerfile所在的目录中运行以下命令构建镜像:
```
docker build -t mysql-source:latest .
```
运行以下命令启动容器:
```
docker run -d -p 3306:3306 --name mysql mysql-source:latest
```
启动后,可以使用以下命令连接到MySQL:
```
mysql -h 127.0.0.1 -P 3306 -u root -p
```
注意:此示例仅用于演示目的,实际使用时需要更改MySQL的配置和安全设置。