有没有办法在 mysql docker 中创建模式和表而不为 mysql 构建新映像?

Posted

技术标签:

【中文标题】有没有办法在 mysql docker 中创建模式和表而不为 mysql 构建新映像?【英文标题】:Is there any way to create schema and tables in mysql docker without build a new image for mysql? 【发布时间】:2018-12-17 08:52:52 【问题描述】:

我有 2 张图片。其中一个是自定义的,另一个是mysql。我正在使用docker-compose。它的数据库部分如下所示。

   db:
      image: mysql
      container_name: mysql-docker-test
      volumes:
         - test-sql:/var/lib/mysql
      restart: always
      networks:
         test-net:
            ipv4_address: 172.17.0.5
      ports:
         - "3306:3306"
      environment:
         MYSQL_ROOT_PASSWORD: my_secret_pw

通讯没有问题但是我运行docker-compose up的时候需要运行sql脚本。

有没有办法在docker-compose.yml运行sql脚本?

【问题讨论】:

How can I create a mysql db with Docker compose?的可能重复 【参考方案1】:

您可以像这样覆盖docker-compose.yml 中的entrypointcommand

db:
  image: mysql
  entrypoint: ./path_to_your_script.sh

在您的脚本中,您必须启动 mysql 服务器,然后运行您的 sql 脚本。当然,您必须将 shell 脚本放在一个卷中。

【讨论】:

以上是关于有没有办法在 mysql docker 中创建模式和表而不为 mysql 构建新映像?的主要内容,如果未能解决你的问题,请参考以下文章

在 Dockerfile 中创建动态用户 - MySQL

我们如何在 MySQL 工作台模式部分查看在 phpmyadmin 中创建的数据库/表?

在 prestosql/presto 容器中创建目录/模式/表

docker中创建MySQL及在外部使用Navicat连接

在 MYSQL 中创建模式 [关闭]

在mysql中创建表时使用变量作为表名