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

使用数据库和表对MySQL进行Dockerize,mysql,docker,Mysql,Docker,我想从Dockerfile创建一个带有初始数据库及其表的MySQL容器 我还有一个特定的/etc/mysql/mysql.conf.d/mysqld.cnf文件(我可以在Dockerfile中简单地使用ADD指令) 我希望我的Dockerfile创建一个MySQL映像,其中包含一个名为DBNAME的数据库,并包含以下表格: CREATE TABLE utente ( ID int NOT NULL AUTO_INCREMENT, nome VARCHAR(255),

我想从Dockerfile创建一个带有初始数据库及其表的MySQL容器

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

我希望我的Dockerfile创建一个MySQL映像,其中包含一个名为DBNAME的数据库,并包含以下表格:

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)
);

我已经在这里搜索了解决问题的方法,但没有找到解决方案。

将您的
.sql
文件复制到
docker entrypoint initdb.d
目录中

.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"]
参考:,“初始化新实例”部分:

第一次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量初始化该数据库。此外,它将执行扩展名为.sh、.sql和.sql.gz的文件,这些文件位于
/docker entrypoint initdb.d


.sql
文件复制到
docker entrypoint initdb.d
目录中

.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"]
参考:,“初始化新实例”部分:

当容器首次启动时,将创建具有指定名称的新数据库,并使用提供的配置变量初始化。此外,它将执行扩展名为.sh、.sql和.sql.gz的文件,这些文件位于
/docker entrypoint initdb.d


如果您正在使用dockerfile,请添加以下内容

ADD schema.sql /docker-entrypoint-initdb.d
或者如果您使用docker compse

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

在我的例子中,最后一个目录名为SQL,其中包含脚本。

如果您使用dockerfile,请添加

ADD schema.sql /docker-entrypoint-initdb.d
或者如果您使用docker compse

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

在我的例子中,最后一个有一个名为SQL的目录,其中包含脚本。

对SO的快速搜索为我提供了帮助。看看这是否有用!可能重复的快速搜索,所以提供了我。看看这是否有用!可能与我使用的Dockerfile重复。schema.sql是否也包含“createdatabasedbname;”?或者它只包含两个create table?我使用的那个只有create table-但是你可以把你想要的任何东西放在那里,用户,数据库等等。所以,我将这个.sql添加到两个表中。但是我如何创建相关的数据库呢?如果你看看MYSQL_数据库,在dockerfile-
ENV MYSQL_database=
中,我使用dockerfile。schema.sql是否也包含“createdatabasedbname;”?或者它只包含两个create table?我使用的那个只有create table-但是你可以把你想要的任何东西放在那里,用户,数据库等等。所以,我将这个.sql添加到两个表中。但是如何创建相关的数据库呢?如果您查看MYSQL\u数据库,在dockerfile-
ENV MYSQL\u database=