使用数据库和表格对MySQL进行Dockerize

我想从一个Dockerfile创build一个初始数据库及其表的MySQL容器。

我也有一个特定的/etc/mysql/mysql.conf.d/mysqld.cnf文件(我可以简单地在Dockerfile中使用ADD指令。)

我希望我的Dockerfile创build一个名为DBNAME的数据库,并使用下面的表创build一个MySQL映像:

 CREATE TABLE utente ( ID int NOT NULL AUTO_INCREMENT, nome VARCHAR(255), cognome VARCHAR(255), username VARCHAR(255), password VARCHAR(255), PRIMARY KEY (ID) ); CREATE TABLE sdplines ( ID int NOT NULL AUTO_INCREMENT, value VARCHAR(255), session_id VARCHAR(255), u_id int, PRIMARY KEY (ID), FOREIGN KEY (u_id) REFERENCES utente(ID) ); 

我已经在寻找解决我的问题,但我找不到解决办法。

如果你使用dockerfile – 然后添加类似的东西

 ADD schema.sql /docker-entrypoint-initdb.d 

或者,如果你使用dockercompse

 volumes: - ./SQL:/docker-entrypoint-initdb.d 

在我的情况下,最后一个有一个名为SQL的目录,其中的脚本。

docker-entrypoint-initdb.d目录中复制你的.sql文件。

.sql文件:

 CREATE DATABASE IF NOT EXISTS `your_db_name` ... 

Dockerfile:

 FROM mysql:5.7.17 MAINTAINER ... ENV MYSQL_ROOT_PASSWORD=... ENV MYSQL_DATABASE=your_db_name COPY your_file.sql /docker-entrypoint-initdb.d/ ENTRYPOINT ["docker-entrypoint.sh"] CMD ["mysqld"] 

参考: https : //hub.docker.com/_/mysql/ ,“初始化新实例”部分:

首次启动容器时,将使用提供的configurationvariables创build并初始化具有指定名称的新数据库。 此外,它将执行在/docker-entrypoint-initdb.d中find的扩展名为.sh,.sql和.sql.gz的/docker-entrypoint-initdb.d