Docker `docker -entrypoint-initdb` не связан - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь добавить сценарий init.sh в docker-entrypoint-initdb.d, чтобы я мог завершить sh подготовку своей БД в контейнере docker. Сценарий находится в каталоге scripts в моем локальном каталоге, где живет Dockerfile. Dockerfile это просто:

FROM glats/alpine-lamp
ENV MYSQL_ROOT_PASSWORD=password

Команда сборки работает и завершается без ошибок, а затем, когда я пытаюсь запустить контейнер, она также работает нормально со связанным томом с помощью скрипта init:

docker run -d --name mydocker -p 8080:80 -it mydocker \
-v ~/Docker/scripts:/docker-entrypoint-initdb.d

Однако, когда я вхожу в работающий контейнер, я не вижу никакой директории docker-entrypoint-initdb.d, и, очевидно, init.sh никогда не запускается:

/ # ls /
bin       etc       media     proc      sbin      tmp
dev       home      mnt       root      srv       usr
entry.sh  lib       opt       run       sys       var

Кто-нибудь знает почему том не монтируется?

1 Ответ

0 голосов
/ 24 марта 2020

Нет таких логик c, определенных в используемом вами образе Docker, точка входа на изображении выше только запускает MySQL и httpd и не имеет никакой возможности создать базу данных. от точки входа.

Если вы хотите иметь возможность запускать сценарий инициализации с использованием mysql -entrypoint и создавать базу данных, вам необходимо использовать официальный образ.

Инициализация fre sh instance

Когда контейнер запускается впервые, создается новая база данных с указанным именем и инициализируется с помощью предоставленные переменные конфигурации. Кроме того, он будет выполнять файлы с расширениями .sh, .sql and .sql.gz, которые находятся в /docker-entrypoint-initdb.d.

Также работает контейнер, лучше использовать один процесс на контейнер. Вы можете посмотреть этот docker -компонентный файл, который запускает стек в соответствии с правилом контейнера «один процесс на контейнер»

...