지난 두 시간 동안 Docker 컨테이너 시작시 startup.sh
스크립트를 시작하려했지만 어떤 이유로 작동하지 않습니다.Docker 컨테이너 시작시 bash 스크립트가 시작되지 않습니다.
내 Dockerfile 이미지를 만들 수 있습니다 :
FROM armv7/armhf-ubuntu:latest
MAINTAINER Mohammed Noureldin <[email protected]>
RUN apt update && apt upgrade -y && apt install -y mumble-server
ADD scripts/startup.sh /startup.sh
내 시작 스크립트 : 나는 스크립트 내부 파일뿐만 아니라 아무 일도을 만들려고하지만
#!/bin/bash
/etc/init.d/mumble-server start
아무것도 여기에 변화가 없습니다!
나는 명령 줄에서 직접 스크립트를 실행했는데, 왜 내가 모르는 작동하지 않습니다하려고 할 때 여기에 내가 무엇을 얻을docker run --name murmur -itd --restart always --network bridge -p 64738:64738 -v /var/lib/mumble-server/ -v /etc/ mnoureldin/murmur:latest /bin/bash -c "bash /startup.sh;/bin/bash"
그리고 :
고정 표시기 실행 명령
43b9d8dd4116bc605537c7af35ab186ca165ea6e957fab5908d39b2f085edf41
[email protected]:~/Dockerfiles/Mumble $ docker attach murmur
[email protected]:/# bash
.dockerenv boot/ etc/ lib/ mnt/ proc/ run/ srv/ sys/ usr/
bin/ dev/ home/ media/ opt/ root/ sbin/ startup.sh tmp/ var/
[email protected]:/# bash startup.sh
Usage: /etc/init.d/mumble-server {start|stop|restart|force-reload}
을 아니면 스크립트의 두 줄 사이에 빈 줄이있을 때이 오류가 얻을 : 수동으로 스크립트를 실행하는
[email protected]:/# bash startup.sh
startup.sh: line 2: $'\r': command not found
Usage: /etc/init.d/mumble-server {start|stop|restart|force-reload}
어떤 사람이 무엇을하고 있는지, 왜 효과가 없는지 설명 할 수 있습니까?
'\ r' 오류는 쉘 스크립트가 Windows 줄 바꿈 (CRLF 또는'\ r \ n')을 사용하여 Bash를 혼동한다는 것을 의미합니다. 오류를 없애기 위해 스크립트를 Unix/Linux 줄 바꿈 (LF 또는'\ n')으로 변환해야합니다. 텍스트 편집기는 CRLF 대신 LF를 사용하도록 파일을 변환 할 수 있어야합니다 ... – nwinkler
@nwinkler 두 번째 경우이지만 공백이없는 경우는 어떻게해야합니까? 어쨌든 당신이 말한대로 변환하려고합니다. –
CRLF 대신 LF를 사용하여 파일을 시험해보십시오. 초기 문제도 해결할 수 있습니다. – nwinkler