首页 > 数据库 >docker compose 配置 mysql 容器启动时创建数据库

docker compose 配置 mysql 容器启动时创建数据库

时间:2023-06-27 16:14:19浏览次数:44  
标签:Compose 数据库 mysql init compose sql MySQL docker Docker

要在 Docker Compose 中配置 MySQL 容器,在容器启动时创建数据库,你可以按照以下步骤进行操作:

  1. 在你的 Docker Compose 文件中,定义一个 MySQL 服务。确保你已经设置了适当的环境变量,如 MYSQL_ROOT_PASSWORDMYSQL_DATABASE

    下面是一个示例的 Docker Compose 配置:

    version: '3'
    services:
      db:
        image: mysql:latest
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: your_root_password
          MYSQL_DATABASE: your_database_name
        volumes:
          - ./data:/var/lib/mysql
    

    在上述配置中,MYSQL_ROOT_PASSWORD 是 MySQL 的 root 用户密码,MYSQL_DATABASE 是要创建的数据库名称。volumes 部分用于将 MySQL 数据持久化到本地目录。

  2. 保存并关闭 Docker Compose 文件。

  3. 使用以下命令启动 Docker Compose:

    docker-compose up -d
    

    这将会启动 MySQL 容器,并在启动过程中自动创建指定的数据库。

创建多个数据库

如果想在 Docker Compose 中创建多个数据库,你可以使用以下方法:

  1. 创建一个名为 init.sql 的 SQL 脚本文件,并在其中编写创建数据库的语句。例如,假设你要创建两个数据库 database1database2,你可以将以下内容保存到 init.sql 文件中:

    CREATE DATABASE IF NOT EXISTS database1;
    CREATE DATABASE IF NOT EXISTS database2;
    
  2. 在你的 Docker Compose 文件中,将 init.sql 文件挂载到 MySQL 容器的 /docker-entrypoint-initdb.d/ 目录下,这样 MySQL 容器在启动时将自动执行该脚本。

    下面是一个示例的 Docker Compose 配置:

    version: '3'
    services:
      db:
        image: mysql:latest
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: your_root_password
        volumes:
          - ./data:/var/lib/mysql
          - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    

    在上述配置中,我们将 init.sql 文件挂载为 /docker-entrypoint-initdb.d/init.sql,这是 MySQL 容器的初始化脚本目录。

    保存并关闭 Docker Compose 文件。

    使用以下命令启动 Docker Compose:

    docker-compose up -d
    

    这将会启动 MySQL 容器,并在启动过程中自动执行 init.sql 文件中的 SQL 语句来创建数据库。

现在,当你启动 Docker Compose 中的 MySQL 容器时,它将自动执行 SQL 脚本并创建指定的数据库。你可以根据需要在 init.sql 文件中添加其他 SQL 语句,如创建表、插入数据等。

标签:Compose,数据库,mysql,init,compose,sql,MySQL,docker,Docker
From: https://www.cnblogs.com/zn-pi/p/17509152.html

相关文章

  • Docker核心概念
    Docker核心概念 Docker技术的三大核心概念,分别是:镜像(Image)容器(Container)仓库(Repository)Docker镜像Docker镜像(Image)类似于虚拟机镜像,可以将它理解为个面向Docker引擎的模板,包含了文件系统。镜像从何而来从DockerHub下载maven->中央仓库通过Dockerf......
  • Docker安装
    Docker安装系统环境序号软件版本1Centos7.52Linux内核3.8之上关闭防火墙systemctlstopfirewalld关闭selinuxvim/etc/selinux/configSELINUX=disabled安装docker引擎yuminstall-ydocker启动dockersystemctlstartdocker设置docker自启动......
  • docker
    yuminstall-yyum-plugin-downloadonlyyum-utilsyuminstall--downloadonly--downloaddir=./libseccomppolicycoreutils-pythondocker-ce-selinuxyumlocalinstall--downloadonly--downloaddir=./libseccomppolicycoreutils-pythondocker-ce-selinuxyumdow......
  • 普罗米修斯搭建_docker容器监控
    Docker容器监控一.docker命令监控容器dockerstatscontainerid二.Prometheus监控docker容器1.设置权限mount-oremount,rw'/sys/fs/cgroup'2.建立软连接ln-s/sys/fs/cgroup/cpu,cpuacct/sys/fs/cgroup/cpuacct,cpu3.在被监控宿主机,运行cadvisor容器dockerrun-d-p18080:80......
  • docker ubantu 常用操作
    运行容器dockerrun--namenginx-p80:80-dnginx查看容器列表dockercontainerls查看容器列表dockercontainerl停止容器dockerstopnginx-test启动容器dockerstartnginx-test删除容器dockerrmnginx-test容器自启动dockerupdate--restart=alwaysnginx-test ......
  • 一行命令使用 Docker 编译 Latex 文件,简单优雅
    使用Docker编译LaTeX文章LaTeX是一种常用的排版系统,它可以帮助用户创建漂亮、专业的文档。但是,安装和配置LaTeX比较麻烦,特别是对于初学者而言。Docker是一个开源平台,可以让用户通过容器化技术来构建、发布和运行应用程序。使用Docker容器可以避免依赖问题,从而使得在不......
  • Volvo EDI 项目 MySQL 方案开源介绍
    近期为了帮助广大用户更好地使用EDI系统,我们根据以往的项目实施经验,将成熟的EDI项目进行开源。用户安装好知行之桥EDI系统之后,只需要下载我们整理好的示例代码,并放置在知行之桥指定的工作区中,即可开始使用。今天的文章主要为大家介绍VOLVOEDI项目,了解如何获取开源的项目......
  • 在 MySQL 中,如果要存储大文本数据,改如何选择
    在MySQL中,如果要存储大文本数据,可以选择以下两种数据类型:TEXT:适用于存储较长的文本数据,最大长度为65,535个字符。LONGTEXT:适用于存储非常大的文本数据,最大长度为4,294,967,295个字符。选择使用哪种类型主要取决于文本数据的大小。如果文本数据的长度不超过65,535个字符......
  • 在 MySQL 中,如果要存储大文本数据,改如何选择
    在MySQL中,如果要存储大文本数据,可以选择以下两种数据类型:TEXT:适用于存储较长的文本数据,最大长度为65,535个字符。LONGTEXT:适用于存储非常大的文本数据,最大长度为4,294,967,295个字符。选择使用哪种类型主要取决于文本数据的大小。如果文本数据的长度不超过65,535个字符,可以使用TE......
  • 在 MySQL 中,如果要存储大文本数据,改如何选择
    在MySQL中,如果要存储大文本数据,可以选择以下两种数据类型:TEXT:适用于存储较长的文本数据,最大长度为65,535个字符。LONGTEXT:适用于存储非常大的文本数据,最大长度为4,294,967,295个字符。选择使用哪种类型主要取决于文本数据的大小。如果文本数据的长度不超过65,535个字符,可以使用TE......