@sumor/ssh-docker

ssh-docker

Un outil Sumor Cloud.
Documentation supplémentaire

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 module ES

Étant donné que 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()

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

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

// Vérification de l'existence de l'image
const existe = await ssh.docker.existsImage(nomImage, version)

// Lancement du conteneur docker
await ssh.docker.run({
  nom: 'nom-conteneur',
  image: nomImage,
  version: version,
  ports: [
    {
      de: 443, // port du conteneur
      à: 30123 // port de l'hôte
    }
  ],
  liaisons: [
    {
      de: '/usr/source/config', // dossier du conteneur
      à: '/chemin/vers/dossier/config', // dossier de l'hôte
      lectureSeule: true // facultatif, par défaut false
    }
  ]
})

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

// Vérification de l'existence du conteneur
const existe = await ssh.docker.exists('nom-conteneur')

// Exécution de commande dans le conteneur
const résultat = await ssh.docker.exec('nom-conteneur', 'ls -al')

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

// Suppression de l'image docker
await ssh.docker.removeImage(nomImage, version)

// Construction du projet Node.js
const journaux = await ssh.docker.buildNode('/chemin/vers/source')

// Lancement du projet Node.js
const journaux = await ssh.docker.runNode('nom-conteneur', '/chemin/vers/source', {
  port
})

// Lancement de Nginx
const journaux = await ssh.docker.runNginx({
  nom: 'nom-conteneur',
  ports: [
    {
      de: 443, // port du conteneur
      à: 30123 // port de l'hôte
    }
  ],
  liaisons: [
    {
      de: '/usr/source/config', // dossier du conteneur
      à: '/chemin/vers/dossier/config', // dossier de l'hôte
      lectureSeule: true // facultatif, par défaut false
    }
  ]
})

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

// Lancement du site
await ssh.docker.runSite({
  processusTravailleur: 2,
  connexionsTravailleur: 2048,
  port: 30100,
  domaines: [
    {
      domaine: 'dev.example.com',
      serveurs: [
        {
          hôte: 'dev.example.com',
          port: 30001,
          maxEchecs: 3,
          maxConns: 5
        },
        {
          hôte: 'dev.example.com',
          port: 30002,
          poids: 1
        }
      ]
    }
  ]
})

await ssh.disconnect()