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 na versão 18.x ou superior
Como este pacote é escrito em módulo ES,
por favor altere o seguinte código no 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/a/pasta/de/origem'
const nomeImagem = 'nome-da-imagem'
const versao = '1.0.0'
await ssh.docker.buildImage(pastaOrigem, nomeImagem, versao)
// listar imagens
const imagens = await ssh.docker.images()
// verificar se a imagem existe
const existe = await ssh.docker.existsImage(nomeImagem, versao)
// executar container docker
await ssh.docker.run({
nome: 'nome-do-container',
imagem: nomeImagem,
versao: versao,
ports: [
{
de: 443, // porta do container
para: 30123 // porta do host
}
],
bindings: [
{
de: '/usr/source/config', // pasta do container
para: '/caminho/para/pasta/de/config', // pasta do host
somenteLeitura: true // opcional, padrão é false
}
]
})
// listar containers docker
const containers = await ssh.docker.containers()
// verificar se o container existe
const existe = await ssh.docker.exists('nome-do-container')
// executar comando no container
const resultado = await ssh.docker.exec('nome-do-container', 'ls -al')
// deletar container docker
await ssh.docker.remove('nome-do-container')
// deletar imagem docker
await ssh.docker.removeImage(nomeImagem, versao)
// construir projeto node.js
const logs = await ssh.docker.buildNode('/caminho/para/pasta/de/origem')
// rodar projeto node.js
const logs = await ssh.docker.runNode('nome-do-container', '/caminho/para/pasta/de/origem', {
porta
})
// rodar Nginx
const logs = await ssh.docker.runNginx({
nome: 'nome-do-container',
ports: [
{
de: 443, // porta do container
para: 30123 // porta do host
}
],
bindings: [
{
de: '/usr/source/config', // pasta do container
para: '/caminho/para/pasta/de/config', // pasta do host
somenteLeitura: true // opcional, padrão é false
}
]
})
// atualizar configuração Nginx
await ssh.docker.updateNginx(idDocker)
// rodar site
await ssh.docker.runSite({
processosTrabalhadores: 2,
conexoesTrabalhadoras: 2048,
porta: 30100,
domínios: [
{
domínio: 'dev.example.com',
servidores: [
{
host: 'dev.example.com',
porta: 30001,
falhasMaximas: 3,
conexõesMaximas: 5
},
{
host: 'dev.example.com',
porta: 30002,
peso: 1
}
]
}
]
})
await ssh.disconnect()