代码之家  ›  专栏  ›  技术社区  ›  masterdany88

mysql docker映像支持在开始时创建多个数据库

  •  1
  • masterdany88  · 技术社区  · 5 年前

    我需要在一个服务启动时创建数据库。F.e.: 服务:

      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"
    

    但不幸的是,使用image/environment变量只支持一个: MYSQL_DATABASE .

    我在docker compose中使用这个

    我能寻求帮助吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Varun Pozhath    5 年前

    因此,编写您自己的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/ 将在容器启动时执行。实际上,您的第二个数据库创建脚本将进入其中 yourscript.sql 它将在容器启动时执行

    您可以使用命令生成图像 docker build -t masterdanny/percona:5.7.24-centos

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

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