当前位置:网站首页>Initialize MySQL database when docker container starts
Initialize MySQL database when docker container starts
2022-07-06 01:30:00 【a_ small_ cherry】
brief introduction : Docker It's used more and more in development , Recently, I made a Spring Boot application , To facilitate deployment Mysql Also on the Docker Run in . So how to initialize SQL Scripts and data ? Let's take a look .
Image download 、 Domain name resolution 、 Time synchronization please click Alibaba open source mirror site
1. Preface
Docker It's used more and more in development , Recently, I made a Spring Boot application , To facilitate deployment Mysql Also on the Docker Run in . So how to initialize SQL Scripts and data ?
I have two traditional solutions here . The first option is to manually import after the container is started , too low No, No . The second one is Spring Boot Client connection Mysql Initializes the database when the container , You can refer to flyway Database version control , But it depends on the capabilities of the client . Can we do it Mysql When the container starts, it initializes the database itself ? Certainly. ! Today, let's demonstrate . See the end of the text for all codes .
2. principle
When Mysql When the container is first started , Will be in /docker-entrypoint-initdb.d Scan under Directory .sh,.sql,.sql.gz Files of type . If these types of files exist , They will be executed to initialize a database . These files are executed in alphabetical order . By default, they initialize the... Declared when the container is started MYSQL_DATABASE Variable defined in the database , For example, the following command initializes a REGION_DB database :
If your startup command does not specify a database, it must be in the database DDL The database is declared and specified in the script . Otherwise, the following exception will be implemented :
Then we will use this mechanism to realize Docker Initialize the database when the container starts .
3. Customize Dockerfile
We write our own Dockerfile To meet our needs , Here we use Mysql:5.7 For example . There may be some differences between different versions , You need to read the official documents in detail . The script is as follows :
- First step , Introduce the official Mysql:5.7 Docker Mirror image .
- The second step , No practical significance , Mainly the author 、 Organizational information .
- The third step , Very important ! I didn't configure the third line , Results after running the container, it was found that all the Chinese characters of the initialization data were garbled . Therefore, you need to modify before initializing the database Mysql Coding and other configurations , I'll change the time zone here to +8:00.
- Step four , Copy the script that contains the database ./sql Folder to mirror /tmp/sql Next .
- Step five , Use mv The command copies all the files in the folder in step 4 .sql File copy to /docker-entrypoint-initdb.d Next , In this way, we can make use of 2. The mechanism of the chapter initializes the database .
- Step six , Delete the used temporary directory .
Then you can build a custom image by using the build image command Mysql Mirror image :
adopt mysql:5.7c Mirror starts with a name of mysql-service The container of ,root The password for 123456, And persist the data to the host D:/mysql/data Next :
docker run --name mysql-service -v d:/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7c
Tips: : You can go through SHOW VARIABLES LIKE 'character%' See if the character set is changed to utf8mb4, It can also be done through SHOW VARIABLES LIKE '%time_zone%' Check whether the time zone is East 8 .
4. summary
Today, we customize a program that can initialize the database Mysql Mirror image , It is convenient for us to deploy . You can also refer to this idea to customize other things you need Docker Mirror image .
In this paper, from :Docker Initialize when the container starts Mysql database - Alicloud developer community
边栏推荐
- Internship: unfamiliar annotations involved in the project code and their functions
- Alibaba-Canal使用详解(排坑版)_MySQL与ES数据同步
- Remember that a version of @nestjs/typeorm^8.1.4 cannot be obtained Env option problem
- c#网页打开winform exe
- Folio. Ink is a free, fast and easy-to-use image sharing tool
- [flask] official tutorial -part3: blog blueprint, project installability
- How does Huawei enable debug and how to make an image port
- Code Review关注点
- 黄金价格走势k线图如何看?
- Basic operations of database and table ----- delete data table
猜你喜欢
基於DVWA的文件上傳漏洞測試
False breakthroughs in the trend of London Silver
Recommended areas - ways to explore users' future interests
[pat (basic level) practice] - [simple mathematics] 1062 simplest fraction
DOM introduction
How does the crystal oscillator vibrate?
A Cooperative Approach to Particle Swarm Optimization
500 lines of code to understand the principle of mecached cache client driver
Who knows how to modify the data type accuracy of the columns in the database table of Damon
leetcode刷题_平方数之和
随机推荐
yii中console方法调用,yii console定时任务
How does the crystal oscillator vibrate?
[Yu Yue education] Liaoning Vocational College of Architecture Web server application development reference
3D vision - 4 Getting started with gesture recognition - using mediapipe includes single frame and real time video
[机缘参悟-39]:鬼谷子-第五飞箝篇 - 警示之二:赞美的六种类型,谨防享受赞美快感如同鱼儿享受诱饵。
Hcip---ipv6 experiment
Idea sets the default line break for global newly created files
[technology development -28]: overview of information and communication network, new technology forms, high-quality development of information and communication industry
Ordinary people end up in Global trade, and a new round of structural opportunities emerge
internship:项目代码所涉及陌生注解及其作用
Some features of ECMAScript
Maya hollowed out modeling
MUX VLAN configuration
JMeter BeanShell的基本用法 一下语法只能在beanshell中使用
【Flask】响应、session与Message Flashing
Paging of a scratch (page turning processing)
[the most complete in the whole network] |mysql explain full interpretation
Recommended areas - ways to explore users' future interests
Une image! Pourquoi l'école t'a - t - elle appris à coder, mais pourquoi pas...
[flask] official tutorial -part1: project layout, application settings, definition and database access