2016-02-07 3 views
1

У меня есть проект Node.js, который использует сценарии npm. Отрывок из package.json:Как установить Docker ENTRYPOINT в NPM?

"scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "build-all": "./node_modules/.bin/webpack --progress --config ./webpack/client.config.js && ./node_modules/.bin/webpack --progress --config ./webpack/server.config.js", 
    "web": "python -m SimpleHTTPServer 8888", 
    "server" : "./node_modules/.bin/electron-spawn ./dist/server.js" 
    }, 

Я создаю Dockerfile для этого проекта. Я надеялся использовать npm в качестве ENTRYPOINT для изображения. В Dockerfile у меня есть:

ENTRYPOINT ['/usr/local/bin/npm' 'run']

, когда я пытаюсь начать hcontainer формирования изображения он говорит, что не может найти НПМ

[email protected]:/home/vagrant# docker run my_image web 
web: 1: web: [/usr/local/bin/npm: not found 

если я запустить оболочку в изображении она выглядит как npm исполняется на этом пути

[email protected]:/home/vagrant# docker run -i -t --entrypoint /bin/bash my_image 
[email protected]:/# ls /usr/local/bin/npm 
/usr/local/bin/npm 

ответ

6

Проблема, похоже, связана с одинарными кавычками в ENTRYPOINT. Не могли бы вы проверить, разрешается ли использование двойных кавычек?

ENTRYPOINT ["/usr/local/bin/npm", "run"] 

Согласно Docker guide, есть только две формы, чтобы написать Entrypoint:

  1. Exec формы (предпочтительный): ENTRYPOINT ["executable", "param1", "param2"]
  2. форму оболочки: ENTRYPOINT command param1 param2
Смежные вопросы