docker 编译安装mysql脚本

在Docker中,你通常不会直接编译安装MySQL,因为Docker提供了预先构建好的MySQL镜像。这些镜像已经包含了编译好的MySQL二进制文件和所需的库文件。不过,如果你有特殊需求,例如想要自己从源代码编译MySQL并打包成Docker镜像,你可以编写一个Dockerfile来实现。

下面是一个简单的Dockerfile示例,用于从MySQL的源代码编译并安装MySQL,然后创建一个Docker镜像:


  
# 使用一个包含编译工具的基础镜像
FROM ubuntu:latest AS builder

# 安装编译MySQL所需的依赖包
RUN apt-get update && \
apt-get install -y \
cmake \
gcc \
g++ \
make \
libncurses5-dev \
libssl-dev \
libreadline-dev \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /usr/src/mysql

# 从MySQL官方网站下载源代码
ARG MYSQL_VERSION=8.0.26
RUN curl -sSL https://dev.mysql.com/get/Downloads/MySQL-${MYSQL_VERSION}/mysql-${MYSQL_VERSION}.tar.gz | tar -xzvf -

# 编译和安装MySQL
RUN mkdir build && \
cd build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_DATADIR=/var/lib/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock && \
make -j$(nproc) && \
make install

# 复制配置文件模板到镜像中
COPY my.cnf /etc/mysql/my.cnf

# 创建一个MySQL用户
RUN useradd -r -s /bin/false -M mysql

# 设置MySQL数据目录权限
RUN chown -R mysql:mysql /var/lib/mysql /usr/local/mysql

# 设置环境变量
ENV PATH=/usr/local/mysql/bin:$PATH
ENV MYSQL_HOME=/usr/local/mysql
ENV MYSQL_DATA_DIR=/var/lib/mysql

# 复制启动脚本
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# 暴露MySQL默认端口
EXPOSE 3306

# 定义容器启动时执行的命令
ENTRYPOINT ["/entrypoint.sh"]

这个Dockerfile执行了以下步骤:

  1. 使用ubuntu:latest作为基础镜像,并切换到builder阶段。
  2. 安装编译MySQL所需的依赖包。
  3. 下载MySQL的源代码。
  4. 使用cmakemake工具编译MySQL。
  5. 安装MySQL到/usr/local/mysql目录。
  6. 复制一个自定义的my.cnf配置文件到镜像中。
  7. 创建一个名为mysql的系统用户。
  8. 设置MySQL数据目录的权限。
  9. 设置环境变量。
  10. 复制一个启动脚本entrypoint.sh到镜像中,并使其可执行。
  11. 暴露MySQL的默认端口3306。
  12. 设置容器启动时的默认命令为entrypoint.sh

你需要创建一个entrypoint.sh脚本来初始化数据库、启动MySQL服务等。这个脚本可能会像这样:


  
#!/bin/bash

# 初始化数据库
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql

# 启动MySQL服务
/usr/local/mysql/bin/mysqld_safe --user=mysql &

# 等待MySQL服务启动
while ! nc -z localhost 3306; do
sleep 1
done

# 现在MySQL服务已经启动,可以执行其他命令,比如等待用户的命令
exec "$@"

要构建这个Docker镜像,你可以在Dockerfile所在的目录中运行以下命令:


  
docker build -t my-custom-mysql .

然后,你可以运行一个新的容器实例:


  
docker run -p 3306:3306 --name my-mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -d my-custom-mysql

相关推荐

  1. docker 编译安装mysql脚本

    2024-02-17 07:42:02       28 阅读
  2. docker 编译安装redis脚本

    2024-02-17 07:42:02       22 阅读
  3. 使用Docker一键安装MySQL与Nginx脚本

    2024-02-17 07:42:02       33 阅读
  4. docker 脚本安装

    2024-02-17 07:42:02       33 阅读
  5. dockerdocker安装Mysql

    2024-02-17 07:42:02       33 阅读
  6. 一键安装docker脚本

    2024-02-17 07:42:02       8 阅读
  7. MySQL 8.0 安装脚本

    2024-02-17 07:42:02       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-17 07:42:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-17 07:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-17 07:42:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-17 07:42:02       20 阅读

热门阅读

  1. VOSK——离线语音库

    2024-02-17 07:42:02       25 阅读
  2. 2024-02-16 web3-区块链-keypass记录

    2024-02-17 07:42:02       32 阅读
  3. Docker之MongoDB安装、创建用户及登录认证

    2024-02-17 07:42:02       36 阅读
  4. 利用Excel模拟投币试验

    2024-02-17 07:42:02       30 阅读
  5. 指纹识别描述

    2024-02-17 07:42:02       37 阅读