Program Tip

Dockerfile에서 스크립트 실행

programtip 2020. 11. 1. 18:35
반응형

Dockerfile에서 스크립트 실행


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"

아무것도 작동하지 않는 것 같습니다.

어떻게하는지 알아?


RUNENTRYPOINT스크립트를 실행하는 두 가지 방법입니다.

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

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

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

그것은 또한 시작해야 오두막 (같은 #!/bin/sh)

스크립트 ( KevinRaimbaud/docker-symfony/docker/php/bootstarp.sh: 몇 가지 git config --global명령)를 고려할 때 Dockerfile에서 해당 스크립트를 한 번 실행하는 것이 가장 좋지만 올바른 사용자를 사용하는지 확인하십시오 (전역 git 구성 파일은 % HOME % /. gitconfig이며 기본적으로 / root 하나)

Dockerfile에 추가 하십시오 .

RUN /bootstart.sh

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


ADD작업 디렉토리의 명령 및 사양 을 사용하여 스크립트를 작성하십시오. 이와 같이 ( "script"는 스크립트의 이름이며 /root/script.sh컨테이너에서 원하는 위치 이며 다른 경로 일 수 있습니다.

ADD script.sh /root/script.sh

이 경우 ADD이전에 와야합니다. CMDBTW가 하나 있으면 호스트 컴퓨터에서 컨테이너의 모든 위치로 스크립트를 가져 오는 멋진 방법입니다.

에서 CMD장소[./script]

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

당신은 또한 지정할 수 있습니다 WORKDIR/root자동으로 컨테이너를 시작할 때, 루트에 배치 you'l,


위의 답변 외에도 :

Windows에서 .sh 스크립트 파일을 생성 / 편집 한 경우 Unix 형식으로 끝나는 줄로 저장되었는지 확인하십시오 . 기본적으로 Windows의 많은 편집기는 Unix 줄 끝을 Windows 형식으로 변환하고 Linux는 파일 시작 부분에서 shebang (#! / bin / sh)을 인식하지 못합니다. 따라서 Linux는 shebang이없는 경우와 같은 오류 메시지를 생성합니다.

팁 :

  • Notepad ++를 사용하는 경우 "편집 / EOL 변환 / UNIX (LF)"를 클릭해야합니다.
  • Visual Studio를 사용하는 경우 " End Of Line "플러그인을 설치하는 것이 좋습니다 . 그런 다음 Ctrl-R, Ctrl-W를 눌러 줄 끝을 표시 할 수 있습니다. Linux 스타일 엔딩을 설정하려면 Ctrl-R, Ctrl-L을 누릅니다. Windows 스타일의 경우 Ctrl-R, Ctrl-C를 누릅니다.

참고 URL : https://stackoverflow.com/questions/34549859/run-a-script-in-dockerfile

반응형