도커 파일에서 스크립트 실행
컴퓨터에서 빌드하는 동안 스크립트를 실행하려고 합니다.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
, 기본적으로 다음과 같습니다./root
1)
도커 파일에 추가:
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를 누릅니다.
다음을 사용하여 스크립트를 만들어 봅니다.ADD
working directory 명령어 및 사양 이렇게("script"는 스크립트의 이름이며,/root/script.sh
는 컨테이너에 저장할 위치입니다. 다른 경로일 수 있습니다.
ADD script.sh /root/script.sh
이경우ADD
앞에 와야 합니다CMD
, BTW가 있다면 호스트 머신에서 컨테이너의 어느 위치로 스크립트를 가져올 수 있는 멋진 방법입니다.
CMD
>[./script]
스크립트를 자동으로 실행해야 합니다.
도 할 수 .WORKDIR
~하듯이/root
를 이 가장입니다.COPY
ADD
로컬 파일 시스템에서 이미지로 복사할 때.또한 컨텐츠를 넣을 하위 폴더를 만드는 것이 좋습니다.다른 것은 아니지만, 그것은 물건들을 깔끔하게 유지시켜줍니다.다를 를 실행 한 것으로 해야 합니다.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
'programing' 카테고리의 다른 글
안드로이드에서 언제 RxJava Observable을 사용해야 하고 언제 간단한 콜백을 사용해야 합니까? (0) | 2023.10.14 |
---|---|
클릭 시 페이지를 새로 고치는 버튼 (0) | 2023.10.14 |
제약 조건이 존재하는지 확인하는 SQL for Oracle (0) | 2023.10.14 |
Mysql MariaDB가 원격 연결에서 작동하지 않습니다. (0) | 2023.10.14 |
mysql, alter column remove primary key and auto increment (0) | 2023.10.14 |