当前位置:   article > 正文

轻松使用Docker启动MySQL并初始化SQL(Dockerfile)_docker mysql 初始化数据库

docker mysql 初始化数据库

使用Docker启动MySQL并初始化SQL

在本教程中,我们将使用Docker来启动MySQL容器,并通过初始化SQL脚本来创建数据库和表。此外,我们还将演示如何将MySQL密码外置到环境变量文件中,以增加安全性。

准备工作

在开始之前,请确保已经安装了Docker。如果尚未安装,可以参考我前面的教程

编写Dockerfile

首先,我们需要创建一个名为Dockerfile的文件,并在其中编写以下内容:

# 使用MySQL的官方镜像作为基础
FROM mysql:latest

# 复制初始化SQL脚本到容器中
COPY /目标Sql文件目录/*.sql /docker-entrypoint-initdb.d/

# 设置环境变量
ENV MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password

# 暴露MySQL默认端口
EXPOSE 3306
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在上述Dockerfile中,我们使用了MySQL官方镜像作为基础镜像,并将初始化SQL脚本init.sql复制到容器的/docker-entrypoint-initdb.d/目录中。这样,MySQL容器在启动时会自动执行该SQL脚本。

我们还通过设置MYSQL_ROOT_PASSWORD_FILE环境变量来指定MySQL的root密码文件的路径。这样,我们可以将密码保存在环境变量文件中,而不是明文写入Dockerfile,提高了安全性。

编写初始化SQL脚本

接下来,我们需要创建一个名为init.sql的文件,并在其中编写我们的初始化SQL语句。例如,以下示例将创建一个名为mydatabase的数据库和一个名为mytable的表:

CREATE DATABASE IF NOT EXISTS mydatabase;
USE mydatabase;

CREATE TABLE IF NOT EXISTS mytable (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

您可以根据自己的需求来编写初始化SQL脚本。

构建和运行Docker容器

现在,我们可以使用以下步骤来构建和运行我们的MySQL容器:

  1. 在与Dockerfile和init.sql文件相同的目录中,创建一个名为.env的文件,并在其中添加以下内容:

    MYSQL_ROOT_PASSWORD=your_password
    
    • 1

    your_password替换为您想要设置的MySQL root密码。

  2. 打开终端或命令提示符,导航到包含Dockerfile和init.sql文件的目录。

  3. 运行以下命令来构建Docker镜像:

    docker build -t mysql-container .
    
    • 1

    这将根据Dockerfile构建一个名为mysql-container的镜像。

  4. 构建完成后,运行以下命令来启动MySQL容器:

    docker run -d --name mysql-instance --env-file .env mysql-container
    
    • 1

    这将在后台启动一个名为mysql-instance的MySQL容器,并使用.env文件中的环境变量设置MySQL的root密码。

  5. 等待片刻,MySQL容器将启动并执行初始化SQL脚本。您可以使用以下命令查看容器的日志输出:

    docker logs mysql-instance
    
    • 1

    如果一切顺利,您将看到MySQL容器成功启动并执行了初始化SQL脚本。

恭喜!您已成功使用Docker启动MySQL并初始化SQL。

总结

通过使用Docker和初始化SQL脚本,我们可以轻松地启动MySQL容器并自动执行所需的数据库和表的创建。将MySQL密码外置到环境变量文件中可以提高安全性。希望本教程能帮助您快速入门使用Docker来管理MySQL容器。如有任何疑问,请随时提问。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/710238
推荐阅读
相关标签
  

闽ICP备14008679号