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

Ссылка на сайт:

https://docs.docker.com/engine/reference/commandline/exec/

Другие вопросы по тегам