MySQL 基础镜像
大约 2 分钟
MySQL 基础镜像
1. 编写启动脚本
#!/bin/bash
set -e
# 初始化 MySQL 数据目录
if [ ! -d "/var/lib/mysql/mysql" ]; then
echo "Initializing MySQL database..."
mysqld --initialize-insecure
fi
# 启动 MySQL 服务
echo "Starting MySQL server..."
mysqld_safe --skip-networking=0 --skip-bind-address &
# 等待 MySQL 服务启动
sleep 5
# 创建数据库和用户
echo "Creating database and user..."
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE;"
mysql -uroot -e "CREATE USER IF NOT EXISTS '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD';"
mysql -uroot -e "GRANT ALL PRIVILEGES ON $MYSQL_DATABASE.* TO '$MYSQL_USER'@'%';"
mysql -uroot -e "FLUSH PRIVILEGES;"
# 保持前台运行
wait
将文件保存,命名为
docker-entrypoint.sh
2. 编写 Dockerfile
# 海外服务器可直接使用dockerHub官方源
# FROM ubuntu:latest
# 国内服务器可使用 AtomHub 提供的源
FROM atomhub.openatom.cn/amd64/ubuntu
# 设置环境变量,防止安装过程中交互提示
ENV DEBIAN_FRONTEND=noninteractive
# 更新软件包列表并安装 MySQL 服务器
RUN apt-get update && \
apt-get install -y mysql-server && \
rm -rf /var/lib/apt/lists/*
# 配置 MySQL 以允许远程连接
RUN sed -i "s/^bind-address\s*=.*/bind-address = 0.0.0.0/" /etc/mysql/mysql.conf.d/mysqld.cnf
# 设置 MySQL 的环境变量
ENV MYSQL_ROOT_PASSWORD=rootpassword
ENV MYSQL_DATABASE=mydatabase
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=mypassword
# 添加启动脚本
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# 暴露 MySQL 默认端口
EXPOSE 3306
# 设置默认命令
CMD ["docker-entrypoint.sh"]
将文件保存,命名为
dockerfile
2. 构建 Docker 镜像
在终端中导航到包含 Dockerfile 的目录,然后运行以下命令构建 Docker 镜像:
docker build -t my-mysql-image .
其中 my-mysql-image
是镜像的名称,你可以根据需要进行修改。构建过程完成后,你可以使用以下命令查看镜像列表:
docker images
3. 运行测试 Docker 容器
使用构建好的镜像运行一个 Docker 容器:
docker run -d -p 3306:3306 my-mysql-image
4. 访问 MySQL 服务器
从主机连接 MySQL,使用 MySQL 客户端从主机连接到运行在容器中的 MySQL 服务:
mysql -h 127.0.0.1 -P 3306 -u myuser -p
输入密码:mypassword
回车
使用您在 Dockerfile 中设置的用户名和密码进行连接。如果能够成功连接,说明 MySQL 服务正常运行。