Файл Docker (alpine) не найден при запуске CMD

Файл Docker (alpine) не найден при запуске CMD

Итак, вот мой Dockerfile:

FROM alpine

RUN apk add --update --upgrade --no-cache mysql mysql-client

RUN rm -rf /etc/my.cnf /etc/mysql/* /etc/mysql.d/ && \
mkdir -p /var/lib/mysql /var/run/mysqld && \
chown -R mysql /var/lib/mysql /run/mysqld && \
chgrp -R mysql /var/lib/mysql /run/mysqld && \
mysql_install_db --user=mysql --ldata=/var

EXPOSE 3306

USER mysql

CMD ["sh", "mysqld_safe --data=/var"]

Моя проблема в том, что когда я запускаю контейнер с образом, он не находит mysqld_safe. Но когда я запускаю команду вручную, вот так: docker run mysql mysqld_safe --data=/varэто работает ! Я пытаюсь изменить dockerfile с помощью: , CMD ["sh", "cat -"] чтобы посмотреть, связана ли проблема с mysqld_safeкомандой, но здесь та же проблема, он не находит, catза исключением случая, когда я запускаю его с помощью docker run mysql cat -.

Проблема в busyboxAlpine или в PATH? Пока не знаю, и мне нужна ваша помощь.

решение1

Вы пропустили -cфлаг, shкоторый сообщает о необходимости анализа/запуска следующего аргумента оболочки. Без этого, я полагаю, он ищет скрипт с именем mysqld_safe --data=/varдля запуска, это не скрипт mysqld_safeс arg --data=/var, а одно имя скрипта с пробелом, дефисами и знаком равенства в имени каталога. Вместо этого вы хотите:

CMD ["sh", "-c", "mysqld_safe --data=/var"]

Связанный контент