首页 \ 问答 \ 如何从Java项目运行Docker容器?(How to run Docker container from Java project?)

如何从Java项目运行Docker容器?(How to run Docker container from Java project?)

请问任何人都可以告诉我如何从java代码运行一个docker容器,我正在尝试使用docker创建一个SaaS,一旦用户登录,我应该从java代码启动一个memcached容器,这个解决方案不起作用:

Process p = Runtime.getRuntime().exec("docker images");

Docker cmds通常在git bash上运行,而不是在cmd上运行。
PS:我在windows上使用docker。

谢谢。


Please can anyone tell me how to run a docker container from java code, I'm trying to make a SaaS using docker, once the user logs in, I should start a memcached container from java code, this solution doesn't work:

Process p = Runtime.getRuntime().exec("docker images");

Docker cmds run usually on git bash, not on cmd.
PS : I'm using docker on windows.

Thank you.


原文:https://stackoverflow.com/questions/34706601
更新时间:2022-09-21 09:09

最满意答案

您可以尝试这种纯JS方法:

let obj = [{'vote':999,'name':'D'},{'vote':341,'name':'A'},{'vote':789,'name':'A'},{'mid':555,'name':'B'}]
let result = [];
obj.reduce(function(p, c){
  if(p[c.name] === undefined){
    result.push(c);
    p[c.name] = c.vote;
  }
  else if(c.vote > p[c.name]){
    let o = result.find(x=> x.name === c.name);
    o.vote = c.vote
  }
  return p;
}, {});

console.log(result)


Lodash方法

逻辑

  • name升序排序数组,按vote降序排序。
  • 现在使用_.uniqBy因为它会选择第一次出现。

注意:我无法使用lodash( 4.17 )进行排序(没有太多使用它),所以我使用纯JS来对它进行排序。

Lodash 4.17

正如@ Ori Drori正确指出的那样 ,我们应该使用_.sortedUniqBy而不是_.uniqBy因为它针对排序数组进行了优化。

let obj = [{'vote':999,'name':'D'},{'vote':341,'name':'A'},{'vote':789,'name':'A'},{'mid':555,'name':'B'}]

var sortedArray = obj.sort(function(a,b){
  return a.name.localeCompare(b.name) || b.vote - a.vote
});

var result = _.sortedUniqBy(sortedArray, 'name');
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>


Lodash 3.10

let obj = [{'vote':999,'name':'D'},{'vote':341,'name':'A'},{'vote':789,'name':'A'},{'mid':555,'name':'B'}]

var result =_.uniq(
              _.sortByOrder(
                obj, 
                ["name", "vote"], 
                ["asc", "desc"]
              ), "name");
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>


You can try this pure JS approach:

let obj = [{'vote':999,'name':'D'},{'vote':341,'name':'A'},{'vote':789,'name':'A'},{'mid':555,'name':'B'}]
let result = [];
obj.reduce(function(p, c){
  if(p[c.name] === undefined){
    result.push(c);
    p[c.name] = c.vote;
  }
  else if(c.vote > p[c.name]){
    let o = result.find(x=> x.name === c.name);
    o.vote = c.vote
  }
  return p;
}, {});

console.log(result)


Lodash approach

Logic

  • Sort array in ascending order by name and descending order by vote.
  • Now use _.uniqBy as it will pick first occurrence.

Note: I was unable to sort using lodash (4.17) (have not used it much), so I have use pure JS to sort it.

Lodash 4.17

As correctly pointed by @Ori Drori, we should use _.sortedUniqBy instead of _.uniqBy as it is optimised for sorted arrays.

let obj = [{'vote':999,'name':'D'},{'vote':341,'name':'A'},{'vote':789,'name':'A'},{'mid':555,'name':'B'}]

var sortedArray = obj.sort(function(a,b){
  return a.name.localeCompare(b.name) || b.vote - a.vote
});

var result = _.sortedUniqBy(sortedArray, 'name');
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>


Lodash 3.10

let obj = [{'vote':999,'name':'D'},{'vote':341,'name':'A'},{'vote':789,'name':'A'},{'mid':555,'name':'B'}]

var result =_.uniq(
              _.sortByOrder(
                obj, 
                ["name", "vote"], 
                ["asc", "desc"]
              ), "name");
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>

相关问答

更多

相关文章

更多

最新问答

更多
  • python的访问器方法有哪些
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。
  • 响应navi重叠h1和nav上的h1链接不起作用(Responsive navi overlaps h1 and navi links on h1 isn't working)
  • 在C中读取文件:“r”和“a +”标志的不同行为(Reading a File in C: different behavior for “r” and “a+” flags)
  • NFC提供什么样的带宽?(What Kind of Bandwidth does NFC Provide?)
  • 元素上的盒子阴影行为(box-shadow behaviour on elements)
  • Laravel检查是否存在记录(Laravel Checking If a Record Exists)
  • 设置base64图像的大小javascript - angularjs(set size of a base64 image javascript - angularjs)
  • 想学Linux 运维 深圳有哪个培训机构好一点
  • 为什么有时不需要在lambda中捕获一个常量变量?(Why is a const variable sometimes not required to be captured in a lambda?)
  • 在Framework 3.5中使用服务器标签<%=%>设置Visible属性(Set Visible property with server tag <%= %> in Framework 3.5)
  • AdoNetAppender中的log4net连接类型无效(log4net connection type invalid in AdoNetAppender)
  • 错误:发送后无法设置标题。(Error: Can't set headers after they are sent. authentication system)
  • 等待EC2实例重启(Wait for an EC2 instance to reboot)
  • 如何在红宝石中使用正则表达式?(How to do this in regex in ruby?)
  • 使用鼠标在OpenGL GLUT中绘制多边形(Draw a polygon in OpenGL GLUT with mouse)
  • 江民杀毒软件的KSysnon.sys模块是什么东西?
  • 处理器在传递到add_xpath()或add_value()时调用了什么顺序?(What order are processors called when passed into add_xpath() or add_value()?)
  • sp_updatestats是否导致SQL Server 2005中无法访问表?(Does sp_updatestats cause tables to be inaccessible in SQL Server 2005?)
  • 如何创建一个可以与持续运行的服务交互的CLI,类似于MySQL的shell?(How to create a CLI that can interact with a continuously running service, similar to MySQL's shell?)
  • AESGCM解密失败的MAC(AESGCM decryption failing with MAC)
  • SQL查询,其中字段不包含$ x(SQL Query Where Field DOES NOT Contain $x)
  • PerSession与PerCall(PerSession vs. PerCall)
  • C#:有两个构造函数的对象:如何限制哪些属性设置在一起?(C#: Object having two constructors: how to limit which properties are set together?)
  • 平衡一个精灵(Balancing a sprite)
  • n2cms Asp.net在“文件”菜单上给出错误(文件管理器)(n2cms Asp.net give error on Files menu (File Manager))
  • Zurb Foundation 4 - 嵌套网格对齐问题(Zurb Foundation 4 - Nested grid alignment issues)
  • 湖北京山哪里有修平板计算机的