docker-compose выполнить скрипт тома от имени root
У меня есть такой docker-compose.yml, например:
version: '3'
services:
db:
#build: db
image: percona:5.7.24-centos
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: bc
MYSQL_PASSWORD: pass
volumes:
- ./db:/docker-entrypoint-initdb.d
и сценарий fe:
mkdir /home/workdirectory/
Здесь нет sudo
в этом изображении.
Пользователь по умолчанию mysql
,
Начальное место просто /
,
Так как я могу выполнять скрипты внутри ./db
как корень на этом изображении?
2 ответа
Вы можете наследовать свой собственный образ докера от percona:5.7.24-centos
и сменить пользователя или установить sudo
, Или просто создайте необходимые каталоги в Dockerfile
,
Я бы посоветовал вам использовать следующее, предполагая, что ваш скрипт - это скрипт bash, и он находится внутри db
папка:
script.sh
#!/bin/bash
mkdir -p /home/workdirectory/some-sub-folder/
затем убедитесь, что ваш контейнер запущен, выполнив docker-compose up -d
затем используйте следующую команду для выполнения некоторого скрипта внутри контейнера:
docker exec db /docker-entrypoint-initdb.d/script.sh
Ссылка на сайт: