@sumor/ssh-docker

ssh-docker

أداة Sumor Cloud.
توثيق إضافي

ssh-docker هو أداة docker ل @sumor/ssh-tools

CI Test Coverage Audit

التثبيت

npm i @sumor/ssh-docker --save

المتطلبات الأساسية

إصدار Node.JS

يتطلب إصدار Node.JS 18.x أو أعلى

يتطلب إصدار Node.JS ES module

نظرًا لأن هذه الحزمة مكتوبة بتنسيق ES module، يرجى تغيير الشيفرة التالية في ملف 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()

// بناء صورة docker
const sourceFolder = '/المسار/إلى/مجلد/المصدر'
const imageName = 'اسم-الصورة'
const version = '1.0.0'
await ssh.docker.buildImage(sourceFolder, imageName, version)

// قائمة الصور
const images = await ssh.docker.images()

// البحث عن وجود صورة
const exists = await ssh.docker.existsImage(imageName, version)

// تشغيل حاوية docker
await ssh.docker.run({
  name: 'اسم-الحاوية',
  image: imageName,
  version: version,
  ports: [
    {
      from: 443, // منفذ حاوية
      to: 30123 // منفذ المضيف
    }
  ],
  bindings: [
    {
      from: '/usr/source/config', // مجلد الحاوية
      to: '/المسار/إلى/مجلد/التكوين', // مجلد المضيف
      readOnly: true // اختياري، الافتراضي هو false
    }
  ]
})

// قائمة الحاويات docker
const containers = await ssh.docker.containers()

// البحث عن وجود حاوية
const exists = await ssh.docker.exists('اسم-الحاوية')

// تنفيذ الأمر داخل الحاوية
const result = await ssh.docker.exec('اسم-الحاوية', 'ls -al')

// حذف حاوية docker
await ssh.docker.remove('اسم-الحاوية')

// حذف صورة docker
await ssh.docker.removeImage(imageName, version)

// بناء مشروع node.js
const logs = await ssh.docker.buildNode('/المسار/إلى/المصدر')

// تشغيل مشروع node.js
const logs = await ssh.docker.runNode('اسم-الحاوية', '/المسار/إلى/المصدر', {
  port
})

// تشغيل Nginx
const logs = await ssh.docker.runNginx({
  name: 'اسم-الحاوية',
  ports: [
    {
      from: 443, // منفذ حاوية
      to: 30123 // منفذ المضيف
    }
  ],
  bindings: [
    {
      from: '/usr/source/config', // مجلد الحاوية
      to: '/المسار/إلى/مجلد/التكوين', // مجلد المضيف
      readOnly: true // اختياري، الافتراضي هو false
    }
  ]
})

// تحديث تكوين Nginx
await ssh.docker.updateNginx(dockerId)

// تشغيل الموقع
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()