Initializing a MySQL database with a schema within a Docker container is a common task that involves creating a database and loading a schema into it. One approach to do this is by using a Dockerfile and the CMD command to execute a script that initializes the database. However, this method may encounter difficulties, as the CMD command can only execute a single command and not a series of commands.
To overcome this issue, a more reliable approach is to utilize the ADD command to add the database schema file to the /docker-entrypoint-initdb.d directory. Upon container creation, the docker-entrypoint.sh script automatically runs any SQL scripts located in this directory against the MySQL database.
Modified Dockerfile:
FROM mysql:5.7.15 MAINTAINER me ENV MYSQL_DATABASE=<schema_name> \ MYSQL_ROOT_PASSWORD=<password> ADD schema.sql /docker-entrypoint-initdb.d EXPOSE 3306
Preparing the Schema Dump:
Before you begin, ensure you have a dump of your MySQL schema saved in a file named schema.sql. This can be obtained by using the mysqldump command:
mysqldump -h <your_mysql_host> -u <user_name> -p --no-data <schema_name> > schema.sql
Starting the Docker MySQL Instance:
Once the Dockerfile is modified and the schema dump is prepared, you can start the Docker MySQL instance using Docker Compose:
docker-compose build docker-compose up
By following these steps, you can effectively initialize a MySQL database with a schema within a Docker container. The docker-entrypoint-initdb.d directory ensures that the schema is loaded during container creation, allowing you to have a pre-populated database with the desired schema.
The above is the detailed content of How to Reliably Initialize a MySQL Database Schema within a Docker Container?. For more information, please follow other related articles on the PHP Chinese website!