Docker新建MySQL容器時自動初始化資料
場景
需要寫一個 Dockerfile
來實現建立 mysql
容器的時候,匯入已經準備好的 .sql
檔案.
解決
剛開始自己模擬過程寫,最後發現不行,仔細看文件,原來官方已經寫了。 文件
Initializing a fresh instance
When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions .sh, .sql and .sql.gz that are found in /docker-entrypoint-initdb.d. Files will be executed in alphabetical order. You can easily populate your mysql services by mounting a SQL dump into that directory and provide custom images with contributed data. SQL files will be imported by default to the database specified by the MYSQL_DATABASE variable.
所以可以寫以下 Dockerfile
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD 123456
ENV MYSQL_USER=example
ENV MYSQL_PASSWORD=123456
COPY example.sql /docker-entrypoint-initdb.d/
然後 docker build -t mysql-test . && docker run -d mysql-test
,此時進入容器中已經可以看見 example.sql
已經匯入到了資料庫
在實際使用中,這麼簡單的東西往往不需要使用 Dockerfile
,可以在編寫 docker-compose.yml
檔案中加上:
volumes:
- ./docker/mysql/scripts:/docker-entrypoint-initdb.d
- ./mysql_data:/var/lib/mysql
參考資料
- https://stackoverflow.com/questions/38504257/mysql-scripts-in-docker-entrypoint-initdb-are-not-executed
相關文章
- Docker容器啟動時初始化Mysql資料庫DockerMySql資料庫
- Docker容器的自啟動Docker
- 如何在Docker容器啟動時自動執行指令碼Docker指令碼
- docker基礎:mysql容器建立,時間同步,掛載到資料夾DockerMySql
- Docker自動補全容器名Docker
- Laravel 專案 使用 Windows docker 執行php 容器 及 mysql 容器時,連不起資料庫。LaravelWindowsDockerPHPMySql資料庫
- Docker重啟保持容器自動啟動Docker
- 自動化整合:Pipeline整合Docker容器Docker
- Docker 容器資料卷 三Docker
- docker - [10] 容器資料卷Docker
- Docker容器的資料卷Docker
- Docker容器資料卷、DockerfileDocker
- Docker(六)容器資料卷Docker
- 解決docker安裝minio容器時,minio容器啟動幾秒後自動退出的一種方法Docker
- docker容器安裝MySQLDockerMySql
- Docker資料管理(資料卷+資料卷容器)Docker
- 自動化整合:Docker容器入門簡介Docker
- Docker容器的自動化監控實現Docker
- Mysql資料庫自動備份MySql資料庫
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- [Docker 系列]docker 學習六,資料卷容器Docker
- [Docker 系列]docker 學習 五,容器資料卷Docker
- docker mysql8.0 啟動,掛資料卷,定時備份,恢復~DockerMySql
- springboot系列文章之啟動時初始化資料Spring Boot
- Docker容器如何保證第二次開啟時自動開啟?Docker
- Docker phpmyadmin 連線mysql容器DockerPHPMySql
- docker修改容器時間Docker
- MySQL資料庫自動補全命令MySql資料庫
- mysql資料庫語句自動生成MySql資料庫
- 容器技術之Docker資料卷Docker
- 【Docker】資料卷及容器連線Docker
- 解讀MySQL 8.0資料字典的初始化與啟動MySql
- 3.1.2 啟動時指定資料庫初始化引數資料庫
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- Docker 資料卷,資料卷容器詳細介紹Docker
- Docker最全教程——資料庫容器化(十)Docker資料庫
- docker建立mysql、nginx資料卷DockerMySqlNginx
- Flink CDC 採集MySQL 初始化或者指定時間戳時,沒有采集到資料MySql時間戳