首先这是个小众需求,在百度上是搜不到 docker npm run dev 动态替换 start。
在此 ↓
记录一下,由于发现 devops 流水线构建镜像的时候也能传参,就不需要在一个目录下分dev、prod dockefile 文件。
关键在于
ARG run_dev=dev
ENV env_run_dev=${run_dev}
CMD sh -c "crond restart && npm run ${env_run_dev}"
可以通过在build 的时候 传 arg参数,再套娃给 env。
npm run 是属于运行时命令,所以读不了 arg 参数。
再另外提一点
docker run -p 8080:8080 -e env_run_dev=dev -t express
可以覆盖之前的 docker 环境变量