%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이것이 내 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
는 찾지 못합니다 .cat
docker run mysql cat -
문제가 busybox
알파인에서 발생합니까, 아니면 PATH에서 발생합니까? 지금은 전혀 모르겠고 도움이 필요합니다.
답변1
쉘에 대한 다음 인수를 구문 분석/실행하도록 지시하는 -c
플래그가 누락되었습니다 . 그것이 없으면 실행할 sh
이름이 있는 스크립트를 찾고 있다고 생각합니다. 그것은 arg 가 있는 스크립트 가 아니라 디렉토리 이름에 공백, 대시 및 등호 기호가 있는 단일 스크립트 이름입니다. 대신에 당신은 다음을 원합니다:mysqld_safe --data=/var
mysqld_safe
--data=/var
CMD ["sh", "-c", "mysqld_safe --data=/var"]