我想使用node.js来操作码头容器。我发现了一个名为克罗德的模块,它似乎是我需要的工具。
但是,我还没有找到向--health-cmd函数添加--health-interval和--health-interval选项的任何方法。
这两个选项在docker run命令中使用。你可以通过docker run --help | grep health找到它们
-运行以检查健康状况的运行状态-cmd字符串命令--运行检查之间的间隔时间(ms_s_s\m_m_h)(默认为0)
我尝试了下面的代码,但是这两个选项在代码中不起作用。
const Docker = require('dockerode')
const docker = new Docker({socketPath: '/var/run/docker.sock'})
docker.createContainer({
Image: 'mysql:5.7',
name: 'myContainer',
env: ['MYSQL_ROOT_PASSWORD=mypassword'],
'health-cmd': 'mysqladmin ping --silent',
'health-interval': '1s',
HostConfig: {
PortBindings: {
'3306/tcp': [
{
HostPort: '3306'
}
]
}
}
}, (err, container) => {
if (err) {
console.error(`create err:${err}`)
} else {
container.start((err, data) => {
if (err) {
console.error(`start err: ${err}`)
} else {
console.log(`data: ${data}`)
}
})
}
})发布于 2017-12-28 10:15:18
感谢这个帖子的帮助。我已经找到了码头引擎API文件,并找到了添加以下两个选项的正确方法:
const Docker = require('dockerode')
const docker = new Docker({socketPath: '/var/run/docker.sock'})
docker.createContainer({
Image: 'mysql:5.7',
name: 'myContainer',
env: ['MYSQL_ROOT_PASSWORD=mypassword'],
Healthcheck: {
Test: ['CMD-SHELL', 'mysqladmin ping'],
Interval: 1000000000
},
HostConfig: {
PortBindings: {
'3306/tcp': [
{
HostPort: '3306'
}
]
}
}
}, (err, container) => {
if (err) {
console.error(`create err:${err}`)
} else {
container.start((err, data) => {
if (err) {
console.error(`start err: ${err}`)
} else {
console.log(`data: ${data}`)
}
})
}
})您可以发现,createContainer从位于node_modules/dockerode/lib/docker.js中的源代码调用POST /containers/create。
https://stackoverflow.com/questions/48005408
复制相似问题