如何在启动docker compose SQL实例后自动执行SQL脚本



启动docker容器后,我就有了一个现成的sql5.7服务器。但我需要创建一个名为"的根用户;根";并授予他所有特权和外部访问权限。因此,我需要这些sql命令在创建容器后自动执行。

这是我的码头组合。yml

version: '3.1'
services:
mysql:
container_name: mysql5.7
restart: always
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 'mypassword' 
ports:
- 33063:3306
volumes:
- sql-data:/var/lib/mysql
volumes:
sql-data: 

我需要这个sql命令自动执行:

FLUSH PRIVILEGES;
CREATE LOGIN root WITH PASSWORD = "mypassword"
GRANT ALL PRIVILEGES *.* TO 'root'@'%';

您需要在原始MySQL的基础上制作一个个性化的映像。创建一个文件夹,将需要运行的命令作为.sql放在那里,并在那里创建一个Docker文件,一个简单的文件可以是:

FROM mysql:5.7
COPY /NAME.sql /docker-entrypoint-initdb.d/

这将确保您创建的图像是原始mysql5.7+脚本的副本。然后在该文件夹中运行Docker run命令来创建一个映像,并使用该映像名称代替原始mysql,例如:

docker image build -t imageName:latest .

最新更新