Ответ на конкретную проблему
Это распространенная ошибка, которую люди допускают при использовании докера.Когда вы используете директиву RUN
в Docker, вы выполняете команду до конца, фиксируете изменения файловой системы и затем завершаете работу.
Поэтому, когда у вас есть строки
RUN /etc/init.d/mysql start
RUN mysqladmin -u root -p status
Первыйодин начинает MySQL.Но затем изменения фиксируются, контейнер закрывается, а затем запускается новый для запуска команды mysqladmin
.Поэтому процесс mysql больше не выполняется.
Чтобы избежать этого, вы можете объединить их в одну строку, например
RUN /etc/init.d/mysql start && mysqladmin -u root -p status
Однако вам придется делать это каждый раз, когда вы захотите использовать mysql.,Например, в вашем develop.sh
.
Более широком ответе
Не рекомендуется запускать несколько процессов в вашем контейнере, а также не рекомендуется использовать init.d
или другие среды запуска системы внутриваш контейнер.
Вы, похоже, относитесь к своему контейнеру как к виртуальной машине, и у вас возникают проблемы, потому что контейнеры не являются виртуальными машинами.
Я рекомендую изучить запуск mysql в отдельном контейнере, а затем использовать такой инструмент, как docker-compose для запуска и остановки ваших контейнеров.