To load initial schema and data to a MySQL Docker container on start-up, you can use the following steps:
- Create a directory to store your SQL scripts, for example
/path/to/sql
. - Write your SQL scripts to create the schema and load the data into separate files and place them in the /path/to/sql directory. For example, you might have
1-schema.sql
and2-data.sql
files. - The scripts will be executed in alphabetical order, so you may want to prefix the files with numbers or letters to control the order in which they are executed (as shown in step 2)
- Create a
docker-compose.yml
file and define a service for your MySQL database. The service definition should include a volume mapping that maps the/path/to/sql
directory on the host to the/docker-entrypoint-initdb.d
directory in the container. For example:
version: '3'
services:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: test12345
volumes:
- /path/to/sql:/docker-entrypoint-initdb.d
5. Start the services defined in the docker-compose.yml
file using the following command:
$ docker-compose up -d
5. The MySQL Docker image includes a script, /docker-entrypoint.sh
, that is executed on container start-up. This script will run any SQL files in the /docker-entrypoint-initdb.d
directory
These steps will allow you to initialize a MySQL database with a schema and data of your choice every time the container starts using Docker Compose.