dockerfile源码安装mysql
时间: 2023-10-12 20:12:45 浏览: 220
可以通过Dockerfile来安装MySQL,以下是一个示例:
```
FROM ubuntu:latest
RUN apt-get update && apt-get install -y mysql-server
RUN mkdir /var/run/mysqld && \
chown mysql:mysql /var/run/mysqld && \
mkdir /var/lib/mysql && \
chown mysql:mysql /var/lib/mysql && \
service mysql start && \
mysql -uroot -e "CREATE USER 'root'@'%' IDENTIFIED BY 'password';" && \
mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;" && \
mysql -uroot -e "FLUSH PRIVILEGES;"
EXPOSE 3306/tcp
CMD ["mysqld_safe"]
```
这个Dockerfile会在Ubuntu镜像上安装MySQL,并创建一个名为root的用户。最后,它会将MySQL的默认端口(3306)暴露出来,以便容器外部可以访问。
相关问题
dockerfile 源码安装mysql
可以按照以下步骤来编写 Dockerfile 安装 MySQL:
1. 选择一个适合的基础镜像,比如 Ubuntu。
2. 更新系统并安装 MySQL 的依赖库:
```
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
libmysqlclient-dev \
mysql-client \
libncurses5-dev \
libncursesw5-dev
```
3. 下载 MySQL 的源代码:
```
RUN wget -O /tmp/mysql.tar.gz https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.33.tar.gz
```
4. 解压源代码并进入目录:
```
RUN tar -xzf /tmp/mysql.tar.gz -C /opt && \
mv /opt/mysql-* /opt/mysql && \
cd /opt/mysql
```
5. 编译和安装 MySQL:
```
RUN cmake . && \
make && \
make install
```
6. 配置 MySQL 服务器:
```
RUN groupadd mysql && \
useradd -r -g mysql mysql && \
cd /opt/mysql && \
mkdir mysql-files && \
chmod 750 mysql-files && \
chown -R mysql:mysql . && \
bin/mysqld --initialize-insecure --user=mysql && \
chown -R root . && \
chown -R mysql:mysql data mysql-files && \
cp support-files/mysql.server /etc/init.d/mysql.server
```
7. 暴露 MySQL 端口:
```
EXPOSE 3306
```
8. 启动 MySQL:
```
CMD ["/etc/init.d/mysql.server", "start"]
```
最终的 Dockerfile 可以类似这样:
```
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
libmysqlclient-dev \
mysql-client \
libncurses5-dev \
libncursesw5-dev
RUN wget -O /tmp/mysql.tar.gz https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.33.tar.gz
RUN tar -xzf /tmp/mysql.tar.gz -C /opt && \
mv /opt/mysql-* /opt/mysql && \
cd /opt/mysql && \
cmake . && \
make && \
make install && \
groupadd mysql && \
useradd -r -g mysql mysql && \
cd /opt/mysql && \
mkdir mysql-files && \
chmod 750 mysql-files && \
chown -R mysql:mysql . && \
bin/mysqld --initialize-insecure --user=mysql && \
chown -R root . && \
chown -R mysql:mysql data mysql-files && \
cp support-files/mysql.server /etc/init.d/mysql.server
EXPOSE 3306
CMD ["/etc/init.d/mysql.server", "start"]
```
dockerfile源码安装mysql8.0
以下是一个示例 Dockerfile,用于在容器中安装 MySQL 8.0:
```Dockerfile
# 基础镜像
FROM ubuntu:20.04
# 安装依赖
RUN apt-get update && apt-get install -y \
wget \
gnupg \
lsb-release \
&& rm -rf /var/lib/apt/lists/*
# 添加 MySQL APT 源
RUN wget -q https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb
RUN echo mysql-apt-config mysql-apt-config/select-server select mysql-8.0 | debconf-set-selections
RUN dpkg -i mysql-apt-config_0.8.16-1_all.deb
# 安装 MySQL 8.0
RUN apt-get update && apt-get install -y mysql-server
# 设置默认编码
RUN echo "[client]" >> /etc/mysql/conf.d/charset.cnf
RUN echo "default-character-set=utf8mb4" >> /etc/mysql/conf.d/charset.cnf
RUN echo "[mysql]" >> /etc/mysql/conf.d/charset.cnf
RUN echo "default-character-set=utf8mb4" >> /etc/mysql/conf.d/charset.cnf
RUN echo "[mysqld]" >> /etc/mysql/conf.d/charset.cnf
RUN echo "character-set-server=utf8mb4" >> /etc/mysql/conf.d/charset.cnf
# 设置默认数据目录
RUN sed -i 's/^datadir\s*=.*/datadir=\/var\/lib\/mysql/' /etc/mysql/mysql.conf.d/mysqld.cnf
# 暴露 MySQL 端口
EXPOSE 3306
# 启动 MySQL
CMD ["mysqld"]
```
在构建 Docker 镜像时,可以使用以下命令:
```
docker build -t mysql:8.0 .
```
该命令将在当前目录下查找 Dockerfile 文件,并构建一个名为 mysql:8.0 的镜像。执行以下命令可以启动一个 MySQL 容器:
```
docker run --name mysql -d -p 3306:3306 mysql:8.0
```
该命令将启动一个名为 mysql 的容器,并将 MySQL 端口映射到主机的 3306 端口。现在,可以使用 MySQL 客户端连接到容器中运行的 MySQL 实例。
阅读全文