当我们在docker里运行数据库,想执行初始化sql脚本,这里以mysql为例: 去执行mysql命令会出现报错
宿主机直接执行mysql命令行是无效的,它会报错,这是因为mysql安装在docker容器内,宿主机无法直接命令执行。
zsh: command not found: mysql
所以我们必须进入docker里去执行,命令如下:
docker exec -it mysql bash
# docker exec 命令用于在正在运行的Docker 容器中执行命令。它允许用户与容器内部进行交互,而无需进入容器的shell。
# 命令中mysql是容器名
此时我们进入mysql命令模式
如果直接执行宿主机的sql文件是不行的
新开一个终端 查看容器的文件目录
docker exec mysql ls
首先我们把文件复制到docker里来
执行 docker cp <宿主机文件的绝对路径> 空格 <docker数据库container id>:<docker容器路径>
docker cp /Users/xxx/xxx.sql 60dba8cdfc5e:/tmp
容器id可以通过docker ps
获取
回到我们之前进入mysql命令模式 选择数据库
use test;
执行sql文件
source /tmp/xxx.sql
即可