使用docker-compose创建MySQL架构/数据库

bal*_*teo 18 mysql docker docker-compose

我正在尝试创建一个mysql数据库/模式,如果它尚不存在.

这是我尝试过的:

泊坞窗,compose.yml

mysql:
  image: mysql:5.6.26
  environment:
   - MYSQL_ROOT_PASSWORD=root
  command: "mysql -uroot -proot < createDB.sql"
  ports:
    - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

createDB.sql

CREATE DATABASE IF NOT EXISTS bignibou;
Run Code Online (Sandbox Code Playgroud)

这是行不通的.如果架构不存在,那么使用docker/docker-compose创建架构的最佳方法是什么?

bal*_*teo 24

我终于找到了解决方案的开始.

MySQL映像采用一个环境变量,即MYSQL_DATABASE,它在映像启动时使用数据库的名称初始化容器.请参阅此处获取完整文档.

或者阅读以下摘录:

MYSQL_DATABASE

此变量是可选的,允许您指定要在映像启动时创建的数据库的名称.如果提供了用户/密码(见下文),则该用户将被授予对该数据库的超级用户访问权限(对应于GRANT ALL).

这是我想出的:

mysql:
  image: mysql:5.6.26
  environment:
   - MYSQL_ROOT_PASSWORD=root
   - MYSQL_DATABASE=bignibou
  ports:
    - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

我现在需要一种方法来指定默认排序规则但这是另一个故事......

编辑:对于那些有兴趣从默认值中指定不同排序规则的人,以下是使用另一个将覆盖默认排序规则的配置文件的说明.见下文:

使用自定义MySQL配置文件MySQL启动配置在文件/etc/mysql/my.cnf中指定,该文件又包含在/etc/mysql/conf.d目录中以.cnf结尾的所有文件.此目录中文件中的设置将扩充和/或覆盖/etc/mysql/my.cnf中的设置.如果要使用自定义的MySQL配置,可以在主机上的目录中创建备用配置文件,然后将该目录位置挂载到mysql容器中的/etc/mysql/conf.d.

如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则可以像这样启动mysql容器(请注意,此命令中仅使用自定义配置文件的目录路径):

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD = my-secret-pw -d mysql:tag这将启动一个新的容器some-mysql所在的MySQL instance使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf中的组合启动设置,后者的设置优先.

  • 这是一种在docker-compose.yml文件中指定默认排序规则的方法:mysql:image:mysql:5.7命令:[mysqld, - character-set-server = utf8mb4, - collat​​ion-server = utf8mb4_unicode_ci] (3认同)