【问题标题】:mysql docker image support multiply databases creation at startmysql docker image 支持在开始时创建多个数据库
【发布时间】:2018-12-18 16:55:34
【问题描述】:

我需要在启动时在一项服务中创建数据库。即: 服务:

  db:
    image: percona:5.7.24-centos
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: db1
      MYSQL_DATABASE_1: db2
      MYSQL_PASSWORD: password
    network_mode: "host"

但不幸的是,使用图像/环境变量仅支持一个:MYSQL_DATABASE。

我在 docker-compose 中使用它

我可以寻求帮助吗?

【问题讨论】:

  • 也许可以编写自己的 Dockerfile 并将创建新数据库的 sql 脚本复制到映像上。

标签: mysql docker percona


【解决方案1】:

因此,编写您自己的 Dockerfile 并将创建新数据库的 sql 脚本复制到映像上。 类似下面的东西

FROM mysql

ENV MYSQL_DATABASE=test \
    MYSQL_ROOT_PASSWORD=password \

ADD yourscript.sql /docker-entrypoint-initdb.d/ 

EXPOSE 3306

所以/docker-entrypoint-initdb.d/ 中的所有 scipts 都将在容器启动时执行。实际上,您的第二个数据库创建脚本将进入yourscript.sql,它将在容器启动时执行

你可以使用命令构建镜像 docker build -t masterdanny/percona:5.7.24-centos

然后在您的 docker-compose 文件中使用该新图像

干杯。如果您有任何问题,请告诉我。

【讨论】:

  • 如何让这些脚本以 root 身份执行?这个 dockerfile 的默认用户是 mysql。
  • 在我的情况下,sql脚本是从nexus下载的,我需要将它保存在某个地方。但是我是没有主目录的mysql用户:(也没有sudo命令
  • sql 文件来自哪里并不重要。您可以从本地复制它,也可以从您的 nexus 下载它。所有这些都在 dockerfile 中。 mysql放在/docker-entrypoint-initdb.d/ 目录下就可以执行了。
猜你喜欢
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多