programing

도커 파일에서 스크립트 실행

bestprogram 2023. 10. 14. 10:22

도커 파일에서 스크립트 실행

컴퓨터에서 빌드하는 동안 스크립트를 실행하려고 합니다.Dockerfile, 효과가 없는 것 같습니다.

그런 식으로 시도했습니다.

FROM php:7-fpm
ADD bootstrap.sh /
ENTRYPOINT ["/bin/bash", "/bootstrap.sh"]

또한 이 방법:

FROM php:7-fpm    
ADD bootstrap.sh /
RUN bash -c "/bootstrap.sh"

또한 실행중인 컨테이너를 실행함으로써:

docker exec symfony /bin/bash -c "/bootstrap.sh"

아무것도 안 되는 것 같아요.

어떻게 하는지 아세요?

RUN그리고.ENTRYPOINT스크립트를 실행하는 두 가지 다른 방법이 있습니다.

RUN즉, 중간 컨테이너를 만들고 스크립트를 실행하며 새 중간 이미지에서 해당 컨테이너의 새 상태를 정지시킵니다.그 이후에는 스크립트가 실행되지 않습니다. 최종 이미지는 해당 스크립트의 결과를 반영해야 합니다.

ENTRYPOINT이미지(아직 스크립트를 실행하지 않음)가 컨테이너를 만들고 해당 스크립트를 실행함을 의미합니다.

두 경우 모두 스크립트를 추가해야 하며,RUN chmod +x /bootstrap.sh좋은 생각입니다.

셰뱅(shebang)으로 시작해야 합니다.#!/bin/sh)

스크립트 고려 중 (bootstrap.sh: 두서너 개의git config --global명령), 하는 것이 가장 좋을 것입니다.RUN그 대본은 당신의 것중에 한번쯤.Dockerfile, 그러나 반드시 적절한 사용자(글로벌)를 사용해야 합니다.git config파일은%HOME%/.gitconfig, 기본적으로 다음과 같습니다./root1)

도커 파일에 추가:

RUN /bootstrap.sh

그런 다음 컨테이너를 실행할 때 다음의 내용을 확인합니다./root/.gitconfig스크립트가 실행되었는지 확인합니다.

위의 답변 외에도:

Windows에서 .sh 스크립트 파일을 생성/편집한 경우 유닉스 형식으로 끝나는 줄로 저장했는지 확인합니다.기본적으로 Windows의 많은 편집기는 유닉스 줄 끝을 Windows 형식으로 변환하고 Linux는 파일의 처음에 shebang(#!/bin/sh)을 인식하지 못합니다.그래서 리눅스는 shebang이 없는 경우와 같은 오류 메시지를 생성할 것입니다.

팁:

  • 메모장++를 사용하는 경우 "편집/EOL 변환/UNIX(LF)"를 클릭해야 합니다.
  • Visual Studio를 사용한다면 End Of Line 플러그인 설치를 제안합니다.그런 다음 Ctrl-R, Ctrl-W를 눌러 선 끝을 볼 수 있습니다.그리고 리눅스 스타일 엔딩을 설정하려면 Ctrl-R, Ctrl-L을 누르면 됩니다.Windows 스타일의 경우 Ctrl-R, Ctrl-C를 누릅니다.

다음을 사용하여 스크립트를 만들어 봅니다.ADDworking directory 명령어 및 사양 이렇게("script"는 스크립트의 이름이며,/root/script.sh는 컨테이너에 저장할 위치입니다. 다른 경로일 수 있습니다.

ADD script.sh /root/script.sh

이경우ADD앞에 와야 합니다CMD, BTW가 있다면 호스트 머신에서 컨테이너의 어느 위치로 스크립트를 가져올 수 있는 멋진 방법입니다.

CMD>[./script]

스크립트를 자동으로 실행해야 합니다.

도 할 수 .WORKDIR~하듯이/root

를 이 가장입니다.COPYADD로컬 파일 시스템에서 이미지로 복사할 때.또한 컨텐츠를 넣을 하위 폴더를 만드는 것이 좋습니다.다른 것은 아니지만, 그것은 물건들을 깔끔하게 유지시켜줍니다.다를 를 실행 한 것으로 해야 합니다.chmod.

여기서, 저는 그들을 창조하고 있습니다.scripts스크립트를 넣고 실행할 하위 폴더:

RUN mkdir -p /scripts
COPY script.sh /scripts
WORKDIR /scripts
RUN chmod +x script.sh
RUN ./script.sh
WORKDIR /scripts
COPY bootstrap.sh .
RUN ./bootstrap.sh 

컨테이너를 생성할 때 bash 스크립트를 실행하는 경우:

만들다script.sh일:

#!/bin/bash
you commands

를 .script.sh파일 규약 에서 편집 -> ->에서 LF로 이렇게 하려면 메모장++에서 편집 -> EOL 변환 -> CRLF에서 LF로 변경으로 이동하면 bash 파일을 실행할 수 있습니다.

를 .#!/bin/sh#!/bin/bash당신의 bash 파일의 첫번째 줄에.

도커 , 에서 bash 하고를 합니다.ENTRYPOINT컨테이너를 생성할 때 파일을 실행하는 방법:

COPY script.sh /
RUN chmod +x /script.sh
ENTRYPOINT ["/script.sh"]

하세요에 하세요.ENTRYPOINT명령어는 이미지에 복사한 bash 파일의 위치를 사용합니다.

당신이 컨테이너, 를 ,script.sh파일이 실행됩니다.

언급URL : https://stackoverflow.com/questions/34549859/run-a-script-in-dockerfile