docker-entrypoint-initdb.d 是许多官方数据库 Docker 镜像(如 MySQL、PostgreSQL、MongoDB 等)支持的一个特殊目录,用于存放数据库初始化脚本。
工作原理
自动执行:当数据库容器首次启动时,会自动执行该目录下的所有脚本
仅首次执行:只有在数据库首次初始化时执行,避免每次容器重启都执行
按字母顺序:脚本按照文件名字母顺序执行
支持的文件类型
.sh - Shell 脚本
.sql - SQL 脚本文件
.sql.gz - 压缩的 SQL 脚本文件
使用方法
1. 通过 Dockerfile 复制脚本
FROM mysql:8.0
# 复制初始化脚本到指定目录
COPY init-scripts/ /docker-entrypoint-initdb.d/
2. 通过 volume 挂载
docker run -v ./init-scripts:/docker-entrypoint-initdb.d/ mysql:8.0
3. 在 docker-compose.yml 中使用
version: '3'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- ./init-scripts:/docker-entrypoint-initdb.d/
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
幂等性是数学和计算机科学中的一个概念,指一个操作或函数可以被多次执行,但结果始终保持一致,不会因为重复执行而改变。
欢迎来撩 : 汇总all