docker:npm在docker start上安装

我想有一种“开发泊坞窗形象”,其中每次我重新启动我的Docker容器时执行npm install (因为我不想每天从我的本地机器上build立,推拉新的开发图像到我们的Docker服务器)。 所以我想我可以做某事 像这样在我的Dockerfile中:

 CMD npm install git+ssh://git@mycompany.de/my/project.git#develop && npm start 

可悲的是,这是行不通的。 docker start后,容器立即停止,我不知道为什么,因为这个工程:

 RUN npm install git+ssh://git@mycompany.de/my/project.git#develop CMD npm start 

(只是为了testing,这当然不是我想要的)。 但是也许我对CMD有一些错误的认识,有人可以启发我呢?

使您的CMD指向一个shell脚本。

 CMD ["/my/path/to/entrypoint.sh"] 

该脚本是:

 #!/bin/bash npm install git+ssh://git@mycompany.de/my/project.git#develop npm start # whatever else 

我觉得这更容易有几个原因:

  1. 这些命令不可避免地会随着更多的事情而增加
  2. 它使交互式运行容器变得容易得多 ,你可以用docker run mycontainer /bin/bash运行它们,然后手动执行你的shell脚本。 这有助于debugging