eks*_*eks 7 node.js npm docker
CMD ["npm", "run", "dev"]如果 package.json 中存在开发脚本,我想运行,否则CMD ["npm", "start"]
有没有一种惯用的码头工人方式来做到这一点?我想我的 CMD 可能是一个 bash 脚本,它检查“npm run dev”的存在。有没有比这更清洁的方法?
您可以动态创建bash包含适当命令的脚本:
RUN bash -c "if npm run | grep -q dev ; then echo npm run dev > run.sh; else echo npm start > run.sh; fi; chmod 777 run.sh;"
CMD ./run.sh
Run Code Online (Sandbox Code Playgroud)
if npm run | grep -q dev将检查dev脚本是否存在于package.json. npm run不带参数运行将列出所有可运行的脚本,并且仅当其中包含时才grep -q dev返回。truedev
echo command > run.sh将使用提供的命令创建一个文件
chmod 777 run.sh将使run.sh可执行文件
CMD ./run.sh将执行创建的文件
Rav*_*ndo -1
读取 Dockerfile 中的 package.json 没有任何意义。您可以做的是为开发环境创建单独的 Dockerfile 和另一个不包含“dev”命令的 Dockerfile。这种方式还可以让您更好地控制正在构建的 Docker 镜像。
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |