【问题标题】:How to create multiple mysql database users in a docker-compose file with in a single container?如何在单个容器中的 docker-compose 文件中创建多个 mysql 数据库用户?
【发布时间】:2022-02-01 17:14:01
【问题描述】:

我有一个包含多个服务(WordPress、nocodb)的 docker-compose 文件,需要一个 mysql 数据库,但我不想为每个服务创建单独的容器(mysql)。我打算使用具有多个用户的单个 mysql 容器。那么,如何使用 docker-compose 添加多个用户

【问题讨论】:

  • docker-compose 的重点是根据需要将多个开箱即用的图像组装成一个“集群”,而不需要调整每个图像。在一个容器中运行多个服务当然是可能的并且很容易做到,但是你会错过 docker-compose 的要点。
  • 您的问题有点难以理解。您希望机器上的一个容器被所有docker-compose 堆栈重复使用吗? 我不想为每个服务创建单独的容器(mysql)
  • 我想用一个sql容器来运行多个服务

标签: mysql database docker docker-compose yaml


【解决方案1】:

首先,docker的整个概念是将每个服务隔离到单独的容器中。

但是,通过使用卷将 sql 文件添加到 /docker-entrypoint-initdb.d 文件夹中,mysql 图像入口点脚本将调用所有 .sql 文件。

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - ./<your-path>/init:/docker-entrypoint-initdb.d

然后你可以添加一个文件./&lt;your-path&gt;/init/01-users.sql

# create your root user
CREATE USER 'root'@'localhost' IDENTIFIED BY 'local';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
# create other users
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
# grand appropriated rights

还有一个文件./&lt;your-path&gt;/init/02-databases.sql

# create databases
CREATE DATABASE IF NOT EXISTS `<first>`;
CREATE DATABASE IF NOT EXISTS `<second>`;

【讨论】:

  • 有什么方法可以将使用 docker-compose 运行的容器连接到 mysql localhost 而不会将 ip 公开
猜你喜欢
  • 2020-07-26
  • 2016-12-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2018-07-26
相关资源
最近更新 更多