@sumor/ssh-docker

ssh-docker

Un outil Sumor Cloud.
Plus de documentation

ssh-docker est un outil docker pour @sumor/ssh-tools

CI Test Coverage Audit

Installation

npm i @sumor/ssh-docker --save

Prérequis

Version Node.JS

Nécessite Node.JS version 18.x ou supérieure

Nécessite Node.JS ES module

Comme ce package est écrit en module ES, veuillez modifier le code suivant dans votre fichier package.json :

{
  "type": "module"
}

Utilisation

Importer l'outil

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

Utiliser l'outil

import SSH from './ssh.js'

const ssh = new SSH(server)

await ssh.connect()

// Construire une image docker
const sourceFolder = '/chemin/vers/dossier/source'
const nomImage = 'nom-de-l-image'
const version = '1.0.0'
await ssh.docker.buildImage(sourceFolder, nomImage, version)

// Liste des images
const images = await ssh.docker.images()

// Vérifier si l'image existe
const existe = await ssh.docker.existsImage(nomImage, version)

// Lancer un conteneur docker
await ssh.docker.run({
  name: 'nom-du-conteneur',
  image: nomImage,
  version: version,
  ports: [
    {
      from: 443, // port du conteneur
      to: 30123 // port de l'hôte
    }
  ],
  bindings: [
    {
      from: '/usr/source/config', // dossier du conteneur
      to: '/chemin/vers/dossier/config', // dossier de l'hôte
      readOnly: true // facultatif, la valeur par défaut est false
    }
  ]
})

// Liste des conteneurs docker
const containers = await ssh.docker.containers()

// Vérifier si le conteneur existe
const existe = await ssh.docker.exists('nom-du-conteneur')

// Exécuter une commande dans le conteneur
const resultat = await ssh.docker.exec('nom-du-conteneur', 'ls -al')

// Supprimer un conteneur docker
await ssh.docker.remove('nom-du-conteneur')

// Supprimer une image docker
await ssh.docker.removeImage(nomImage, version)

// Construire un projet node.js
const logs = await ssh.docker.buildNode('/chemin/vers/source')

// Lancer un projet node.js
const logs = await ssh.docker.runNode('nom-du-conteneur', '/chemin/vers/source', {
  port
})

// Lancer Nginx
const logs = await ssh.docker.runNginx({
  name: 'nom-du-conteneur',
  ports: [
    {
      from: 443, // port du conteneur
      to: 30123 // port de l'hôte
    }
  ],
  bindings: [
    {
      from: '/usr/source/config', // dossier du conteneur
      to: '/chemin/vers/dossier/config', // dossier de l'hôte
      readOnly: true // facultatif, la valeur par défaut est false
    }
  ]
})

// Mettre à jour la configuration Nginx
await ssh.docker.updateNginx(dockerId)

// Lancer un site
await ssh.docker.runSite({
  workerProcesses: 2,
  workerConnections: 2048,
  port: 30100,
  domains: [
    {
      domain: 'dev.example.com',
      servers: [
        {
          host: 'dev.example.com',
          port: 30001,
          maxFails: 3,
          maxConns: 5
        },
        {
          host: 'dev.example.com',
          port: 30002,
          weight: 1
        }
      ]
    }
  ]
})

await ssh.disconnect()