내 node.js 앱을 Dockerize하려고합니다. 컨테이너가 빌드되면 a를 실행 git clone
하고 노드 서버를 시작 하기를 원합니다 . 따라서 이러한 작업을 .sh 스크립트에 넣었습니다. 그리고 ENTRYPOINT에서 단일 명령으로 스크립트를 실행합니다.
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y build-essential libssl-dev gcc curl npm git
#install gcc 4.9
RUN apt-get install -y software-properties-common python-software-properties
RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test
RUN apt-get update
RUN apt-get install -y libstdc++-4.9-dev
#install newst nodejs
RUN curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
RUN apt-get install -y nodejs
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD package.json /usr/src/app/
RUN npm install
ADD docker-entrypoint.sh /usr/src/app/
EXPOSE 8080
ENTRYPOINT ["/usr/src/app/docker-entrypoint.sh"]
내 docker-entrypoint.sh는 다음과 같습니다.
git clone git@<repo>.git
git add remote upstream git@<upstream_repo>.git
/usr/bin/node server.js
이 이미지를 빌드하고 실행 한 후 :
docker run --env NODE_ENV=development -p 8080:8080 -t -i <image>
나는 얻고있다 :
docker: Error response from daemon: oci runtime error: exec: "/usr/src/app/docker-entrypoint.sh": permission denied.
컨테이너에 쉘을 넣고 docker-entrypoint.sh의 권한은 다음과 같습니다.
-rw-r--r-- 1 root root 292 Aug 10 18:41 docker-entrypoint.sh
세 가지 질문 :
내 bash 스크립트에 잘못된 구문이 있습니까?
이미지에 추가하기 전에 bash 파일의 권한을 어떻게 변경합니까?
bash 스크립트를 사용하지 않고 진입 점에서 여러 git 명령을 실행하는 가장 좋은 방법은 무엇입니까?
감사.
.sh
ls.elf
exec
a는 그런 식으로 쉘? bash
접두사 가 필요하지 않을 것 입니다.