如何在dockerode的createContainer()函数中添加`
我想使用node.js来操作docker容器。我发现了一个名为dockerode的模块,它看起来像我需要的工具。
但是,我还没有找到任何方法将--health-cmd
和--health-interval
选项添加到createContainer
函数中。
这两个选项用于docker run
命令。你可以通过docker run --help | grep health
找到它们:
--health-cmd string运行以检查运行状况的命令--health-interval duration运行检查之间的时间(ms | s | m | h)(默认为0)
我已经尝试了以下代码,但是2个选项在代码中不起作用。
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}`)
}
})
}
})
回答如下:
感谢post的帮助。我找到了document of Docker Engine API并想出了添加2个选项的正确方法:
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
的源代码中找到POST /containers/create
调用node_modules/dockerode/lib/docker.js
。
如何在dockerode的createContainer()函数中添加`
我想使用node.js来操作docker容器。我发现了一个名为dockerode的模块,它看起来像我需要的工具。
但是,我还没有找到任何方法将--health-cmd
和--health-interval
选项添加到createContainer
函数中。
这两个选项用于docker run
命令。你可以通过docker run --help | grep health
找到它们:
--health-cmd string运行以检查运行状况的命令--health-interval duration运行检查之间的时间(ms | s | m | h)(默认为0)
我已经尝试了以下代码,但是2个选项在代码中不起作用。
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}`)
}
})
}
})
回答如下:
感谢post的帮助。我找到了document of Docker Engine API并想出了添加2个选项的正确方法:
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
的源代码中找到POST /containers/create
调用node_modules/dockerode/lib/docker.js
。