CMD에서 Docker(알파인) 파일을 찾을 수 없습니다.

CMD에서 Docker(알파인) 파일을 찾을 수 없습니다.

이것이 내 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는 찾지 못합니다 .catdocker run mysql cat -

문제가 busybox알파인에서 발생합니까, 아니면 PATH에서 발생합니까? 지금은 전혀 모르겠고 도움이 필요합니다.

답변1

쉘에 대한 다음 인수를 구문 분석/실행하도록 지시하는 -c플래그가 누락되었습니다 . 그것이 없으면 실행할 sh이름이 있는 스크립트를 찾고 있다고 생각합니다. 그것은 arg 가 있는 스크립트 가 아니라 디렉토리 이름에 공백, 대시 및 등호 기호가 있는 단일 스크립트 이름입니다. 대신에 당신은 다음을 원합니다:mysqld_safe --data=/varmysqld_safe--data=/var

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

관련 정보