Arquivo Docker (alpino) não encontrado quando CMD

Arquivo Docker (alpino) não encontrado quando CMD

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=/varfunciona! Tento alterar o dockerfile com: CMD ["sh", "cat -"] para ver se o problema é com o mysqld_safecomando, mas o mesmo problema aqui, ele não encontra catexceto quando executo com docker run mysql cat -.

O problema vem busyboxdo Alpine ou do PATH? Não tenho ideia por enquanto e preciso de sua ajuda.

Responder1

Você está perdendo o -csinalizador shque informa para analisar/executar o próximo argumento no shell. Sem isso, acredito que esteja procurando um script com o nome mysqld_safe --data=/varpara rodar, não é o script mysqld_safecom 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"]

informação relacionada