码头工人使用数据库和用户创建的基于MySQL的图像来创建图像

时间:2018-10-17 15:33:17

标签: mysql docker

我想用docker为我的应用创建图像。 该应用程序使用MySQL。我需要我的映像基于MySQL映像(mysql / mysql-server?)。 在Dockerfile中,我需要设置一些指令来创建具有特定用户名/密码的数据库。因此,我的应用程序可以与该数据库一起使用。 我不需要表,只有具有特定名称和用户/密码的空数据库可以访问该数据库。

我该怎么做?

我想要类似

FROM mysql/mysql-server
# Create MySQL DB
mysql -u root -e "CREATE DATABASE MyDB"

但是我在这里不知道root用户密码。看来是自动生成的?

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您在这里有2个解决方案:

  1. [简单]使用docker-compose并创建一个docker-compose.yml文件,如下所示:

    version: '3'
    services:
        mariadb:
            container_name: mariadb
            image: mariadb:latest
            environment:
              - MYSQL_DATABASE=_YOUR_DB_
              - MYSQL_ROOT_PASSWORD="_YOUR_PASSWORD_"
              - MYSQL_USER=_YOUR_USER_
              - MYSQL_PASSWORD=_YOUR_USER_PASSWORD_
        ...
    

此配置将为您带来一个MariaDB数据库。另外,如果您想使用它,只需检查以下页面即可获得安装指南: https://github.com/docker/compose

最后一步就是进入保存docker-compose.yml的目录并运行:

docker-compose up

,或者如果您不想在终端内看到日志,只需向其添加-d标志。 2. [有点复杂]您可以根据需要创建自定义图像。在这种情况下,最好查看Dockerfile文档,然后查看此自动生成的默认MariaDB Dockerfile,以了解确切地实现目标的方法。

答案 1 :(得分:0)

该图像默认情况下会自动生成根密码,如图像github存储库(https://github.com/mysql/mysql-docker)中所述。您可以使用所需的密码在Dockerfile中设置MYSQL_ROOT_PASSWORD环境变量。

除此之外,如果要在映像启动时创建数据库,则可以使用环境变量MYSQL_DATABASE。

有关此处支持的环境变量的更多信息: https://github.com/mysql/mysql-docker#docker-environment-variables