%20n%C3%A3o%20encontrado%20quando%20CMD.png)
Então este é o meu 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"]
Meu problema é que quando executo o container com a imagem ele não encontra mysqld_safe
. Mas quando executo o comando manualmente assim: docker run mysql mysqld_safe --data=/var
funciona! Tento alterar o dockerfile com:
CMD ["sh", "cat -"]
para ver se o problema é com o mysqld_safe
comando, mas o mesmo problema aqui, ele não encontra cat
exceto quando executo com docker run mysql cat -
.
O problema vem busybox
do Alpine ou do PATH? Não tenho ideia por enquanto e preciso de sua ajuda.
Responder1
Você está perdendo o -c
sinalizador sh
que informa para analisar/executar o próximo argumento no shell. Sem isso, acredito que esteja procurando um script com o nome mysqld_safe --data=/var
para rodar, não é o script mysqld_safe
com o arg --data=/var
, mas um único nome de script com espaço, travessões e sinal de igual no nome do diretório. Em vez disso, você quer:
CMD ["sh", "-c", "mysqld_safe --data=/var"]