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自動補全容器名Docker
- docker基礎:mysql容器建立,時間同步,掛載到資料夾DockerMySql
- Docker重啟保持容器自動啟動Docker
- Laravel 專案 使用 Windows docker 執行php 容器 及 mysql 容器時,連不起資料庫。LaravelWindowsDockerPHPMySql資料庫
- docker 啟動 centos 映象,容器會自動退出DockerCentOS
- Docker(六)容器資料卷Docker
- Docker容器的資料卷Docker
- Docker容器資料卷、DockerfileDocker
- docker - [10] 容器資料卷Docker
- 自動化整合:Docker容器入門簡介Docker
- 自動化整合:Pipeline整合Docker容器Docker
- Docker容器的自動化監控實現Docker
- Docker資料管理(資料卷+資料卷容器)Docker
- docker容器安裝MySQLDockerMySql
- [Docker 系列]docker 學習 五,容器資料卷Docker
- [Docker 系列]docker 學習六,資料卷容器Docker
- Docker容器如何保證第二次開啟時自動開啟?Docker
- docker修改容器時間Docker
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- Mysql資料庫自動備份MySql資料庫
- docker mysql8.0 啟動,掛資料卷,定時備份,恢復~DockerMySql
- 容器技術之Docker資料卷Docker
- 【Docker】資料卷及容器連線Docker
- MySQL資料庫自動補全命令MySql資料庫
- mysql資料庫語句自動生成MySql資料庫
- 3.1.2 啟動時指定資料庫初始化引數資料庫
- Docker 資料卷,資料卷容器詳細介紹Docker
- Docker最全教程——資料庫容器化(十)Docker資料庫
- Docker phpmyadmin 連線mysql容器DockerPHPMySql
- 解讀MySQL 8.0資料字典的初始化與啟動MySql
- Docker容器內部修改時區Docker
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- Docker容器學習梳理 - 容器時間跟宿主機時間同步Docker
- Docker學習筆記:映象、容器、資料卷Docker筆記
- Docker 入門系列二:容器的資料卷Docker