Uma Ferramenta Sumor Cloud.
Mais Documentação
ssh-docker é uma ferramenta docker para @sumor/ssh-tools
npm i @sumor/ssh-docker --save
Requer Node.JS versão 18.x ou superior
Como este pacote é escrito em módulo ES,
por favor altere o seguinte código em seu arquivo package.json
:
{
"type": "module"
}
import SSHBasic from '@sumor/ssh-tools'
import docker from '@sumor/ssh-docker'
class SSH extends SSHBasic {
constructor(config) {
super(config)
this.addTool('docker', docker)
}
}
export default SSH
import SSH from './ssh.js'
const ssh = new SSH(server)
await ssh.connect()
// construir imagem docker
const pastaOrigem = '/caminho/para/pasta/origem'
const nomeImagem = 'nome-imagem'
const versao = '1.0.0'
await ssh.docker.buildImage(pastaOrigem, nomeImagem, versao)
// lista de imagens
const imagens = await ssh.docker.images()
// verificar existência da imagem
const existe = await ssh.docker.existsImage(nomeImagem, versao)
// executar container docker
await ssh.docker.run({
nome: 'nome-container',
imagem: nomeImagem,
versao: versao,
portas: [
{
de: 443, // porta do container
para: 30123 // porta do host
}
],
bindings: [
{
de: '/usr/source/config', // pasta do container
para: '/caminho/para/pasta/config', // pasta do host
readOnly: true // opcional, padrão é false
}
]
})
// lista de containers docker
const containers = await ssh.docker.containers()
// verificar existência do container
const existe = await ssh.docker.exists('nome-container')
// executar comando no container
const resultado = await ssh.docker.exec('nome-container', 'ls -al')
// excluir container docker
await ssh.docker.remove('nome-container')
// excluir imagem docker
await ssh.docker.removeImage(nomeImagem, versao)
// construir projeto node.js
const logs = await ssh.docker.buildNode('/caminho/para/pasta/fonte')
// executar projeto node.js
const logs = await ssh.docker.runNode('nome-container', '/caminho/para/pasta/fonte', {
porta
})
// executar Nginx
const logs = await ssh.docker.runNginx({
nome: 'nome-container',
portas: [
{
de: 443, // porta do container
para: 30123 // porta do host
}
],
bindings: [
{
de: '/usr/source/config', // pasta do container
para: '/caminho/para/pasta/config', // pasta do host
readOnly: true // opcional, padrão é false
}
]
})
// atualizar configuração Nginx
await ssh.docker.updateNginx(idDocker)
// executar site
await ssh.docker.runSite({
processosTrabalhadores: 2,
conexoesTrabalhadores: 2048,
porta: 30100,
domínios: [
{
domínio: 'dev.example.com',
servidores: [
{
host: 'dev.example.com',
porta: 30001,
maxFails: 3,
maxConexões: 5
},
{
host: 'dev.example.com',
porta: 30002,
peso: 1
}
]
}
]
})
await ssh.disconnect()