mysql容器初始化后如何运行脚本?

问题描述 投票:0回答:1

所以,我希望在 MySQL Docker 容器启动后立即运行一个脚本(并且已经通过

mysql
图像中定义的入口点),我知道
docker-entrypoint-initdb.d
的存在,但这种方法存在问题我不知道如何修复:脚本是在
mysql
用户下执行的,而不是
root
,并且我需要
root
访问权限。

我尝试创建一个自定义入口点来获取

docker-entrypoint.sh
,但它不起作用:

#!/bin/bash
echo aaaa
source /.../docker-entrypoint.sh
_main "$@"
echo bbbb

这不起作用,MySQL 之后未初始化(尽管回显有效)。

那么,在数据库初始化后,我应该怎么做才能以

root
的方式运行脚本呢?

mysql docker containers
1个回答
0
投票
├── Dockerfile
└── entrypoint.sh

🗎

Dockerfile

FROM mysql:latest

COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh

ENTRYPOINT [ "/entrypoint.sh" ]

🗎

entrypoint.sh
(这是自定义的入口点。它从基础映像运行入口点,然后等待 MySQL 服务器变得可用。一旦可用,它就会确认当前用户是
root
,然后准备好执行任何操作你需要。)

#!/bin/bash

/usr/local/bin/docker-entrypoint.sh mysqld >/dev/null 2>&1  &
PID="$!"

while ! mysqladmin ping -h"localhost" --silent; do
    echo "🟠 Wait for MySQL to be ready..."
    sleep 1
done

echo "🟢 MySQL is ready."
echo "🟦 Current user: $(whoami)"

# Do other things here...

wait "$PID"

© www.soinside.com 2019 - 2024. All rights reserved.