如何为node.js和docker保留版本DRY

时间:2018-04-13 19:29:48

标签: node.js docker yarnpkg

我正在构建一组在Docker上运行并与Kubernetes一起编排的微服务。我正在构建Node.js中的服务,因此对于每个服务,我都有一个具有版本的package.json文件。我想在构建我的docker镜像时使用这个版本,并且为了使构建命令保持简单,我想让它成为package.json中的脚本。但是,我想保留版本号DRY(即避免在{ "name": "sample-service", "version": "1.0.0", "description": "Sample service", "dependencies": { ... }, "scripts": { "docker": "docker build -t prefix/image-name:$version ." } } 文件中传播版本号,或者有任何其他副本)。例如,如果我有以下package.json,我如何引用脚本中的版本以避免重复?

$version

显然,在标签中使用yarn不起作用,那么还有另外一种方法吗?如果它有所作为,我使用npm而不是<div class="right_result"> <?php $orders = get_orders_by_email($user->Username); if(!empty($orders)): ?> <table id="order_table" class="display"> <thead> <tr> <th><strong>Order Number</strong></th> <th><strong>Property Address</strong></th> <th><strong>Status</strong></th> <th><strong>Notes</strong></th> </tr> </thead> <tbody> <?php foreach ($orders as $order): ?> <tr> <td><?php echo $order->Order_Number; ?></td> <td><?php echo $order->Order_Name; ?></td> <td><?php echo $order->Order_Status; ?></td> <td><?php echo $order->Order_Notes_Public; ?></td> </tr> <?php endforeach;?> </tbody> </table> <?php else: ?> <p>No order history to show.</p> <?php endif; ?> </div>

1 个答案:

答案 0 :(得分:1)

是首先获取package.json

的版本

然后将版本导出到变量,以便您可以variable

访问它

这是你的package.json

{
  "name": "sample-service",
  "version": "1.0.0",
  "description": "Sample service",
  "dependencies": {
  },
  "scripts": {
    "docker": "export version=$(node -e \"console.log(require('./package.json').version)\") || set version=$(node -e \"console.log(require('./package.json').version)\") ; echo version is: $version;  docker build -t prefix/image-name:$version ."  }
}

如果你运行这个,你会得到一些像

这样的东西

enter image description here