El archivo Docker (alpino) no se encuentra cuando CMD

El archivo Docker (alpino) no se encuentra cuando CMD

Entonces este es mi 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"]

Mi problema es que cuando ejecuto el contenedor con la imagen no la encuentra mysqld_safe. Pero cuando ejecuto el comando manualmente de esta manera: docker run mysql mysqld_safe --data=/var¡funciona! Intento cambiar el dockerfile con: CMD ["sh", "cat -"] para ver si el problema está en el mysqld_safecomando, pero el mismo problema aquí, no lo encuentra catexcepto cuando lo ejecuto con docker run mysql cat -.

¿El problema proviene busyboxde Alpine o de PATH? No tengo idea por ahora y necesito tu ayuda.

Respuesta1

Le falta el -cindicador shque le indica que analice/ejecute el siguiente argumento en el shell. Sin eso, creo que está buscando un script con el nombre mysqld_safe --data=/varpara ejecutar, ese no es el script mysqld_safecon arg --data=/var, sino un nombre de script único con un espacio, guiones y un signo igual en el nombre del directorio. En lugar de eso quieres:

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

información relacionada