如何基于NODE_ENV为npm脚本中的docker-compose配置条件detach模式
实现方案
docker-compose up的-d后台运行参数属于命令行执行参数,无法在Dockerfile、docker-compose.yml配置文件中静态声明,只能在执行命令时通过环境变量判断动态拼接参数。你现有的Dockerfile启动逻辑、docker-compose.yml配置无需调整,保持原样即可。
具体修改步骤
- 修改package.json中的
start脚本,替换原有配置即可:
"start": "if [ \"$NODE_ENV\" = \"production\" ]; then docker-compose up --build --force-recreate -d api; else docker-compose up --build --force-recreate api; fi"
以上脚本默认适配Linux/macOS终端、Windows Git Bash/WSL环境。如果需要兼容Windows原生CMD/PowerShell,可以将判断逻辑分别写入独立的
.sh/.bat脚本,再在start字段中调用对应平台的脚本即可。
效果验证
- 当
NODE_ENV=dev时执行npm start,会以前台模式启动容器,运行nodemon app.js,可直接在控制台查看实时日志 - 当
NODE_ENV=production时执行npm start,会自动拼接-d参数以后台模式启动容器,运行node app.js
小提示:如果你不想每次手动设置环境变量,可以将
NODE_ENV=xxx写入项目根目录的.env文件,启动时会自动读取生效。
内容的提问来源于stack exchange,提问作者HRK44
相关产品推荐
相关产品推荐

