Я пытаюсь подключить приложение node.js. Когда контейнер построен, я хочу, чтобы он запустил git clone
, а затем запустил сервер узлов. Поэтому я помещал эти операции в сценарий .sh. И запустить скрипт в качестве одной команды в Entrypoint:docker entrypoint running bash script получает «разрешенное отклонение»
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 [email protected]<repo>.git
git add remote upstream [email protected]<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, прежде чем добавлять его в изображение?
Каков наилучший способ запуска нескольких команд git в точке входа без использования сценария bash?
Спасибо.
Для того, чтобы ответить на этот вопрос, нам необходимо просмотреть разрешения для файлов. –
Кстати, если это скрипт ** bash **, а не ** ** ** **, расширение '.sh' оставляет неверное впечатление о том, какие интерпретаторы могут его выполнить. Вы можете подумать об этом, но для UNIX-команд не принято иметь расширения (например, вы не запускаете 'ls.elf'). –
Можем ли мы «запустить» оболочку таким образом? ему не нужен префикс 'bash'. –