%20no%20se%20encuentra%20cuando%20CMD.png)
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_safe
comando, pero el mismo problema aquí, no lo encuentra cat
excepto cuando lo ejecuto con docker run mysql cat -
.
¿El problema proviene busybox
de Alpine o de PATH? No tengo idea por ahora y necesito tu ayuda.
Respuesta1
Le falta el -c
indicador sh
que 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=/var
para ejecutar, ese no es el script mysqld_safe
con 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"]