I want to run an init sql file at the first run of my MySQL:5.7.5 docker run.
I tired to run the following docker run command:
docker run -d -p 13306:3306 \
 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
 -e MYSQL_DATABASE=storagedb \
 -v storage.sql:/docker-entrypoint-initdb.d/storage.sql \
 mysql:5.7.5
Then, I run docker exec into this container and use the following command mysql -uroot -p  into the mysql server.
Then I run use storagedb command to select the -e MYSQL_DATABASE=storagedb specified Database。
In the end, run show tables , I can't see the table I created in the SQL file。
The sql file's content is:
create database storagedb;
use storagedb;
CREATE TABLE `storage_tbl` (
                               `id` int(11) NOT NULL AUTO_INCREMENT,
                               `commodity_code` varchar(255) DEFAULT NULL,
                               `count` int(11) DEFAULT 0,
                               PRIMARY KEY (`id`),
                               UNIQUE KEY (`commodity_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
I try again with a Dockerfile, TheDockerfile's content is:
FROM mysql:5.7
ADD storage.sql /docker-entrypoint-initdb.d/storage.sql
RUN chmod -R 775 /docker-entrypoint-initdb.d
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
I build this Dockerfile to a new image tmpMySQL, Then i run this image and go into the container.
Now, i can see the database storagedb and the table storage_tbl. why?
I don't want to build a new docker image. I just want to startup a container by a mysql image and run an init .sql file with /docker-entrypoint-initdb.d!
Your guidance would be appreciated, Thank you very much!