@sumor/ssh-docker

ssh-docker

أداة Sumor Cloud.
مزيد من الوثائق

ssh-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 build image
const sourceFolder = '/path/to/source/folder'
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)

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

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

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

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

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

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

// بناء مشروع Node.js
const logs = await ssh.docker.buildNode('/path/to/source')

// تشغيل مشروع Node.js
const logs = await ssh.docker.runNode('اسم-الحاوية', '/path/to/source', {
  port
})

// تشغيل Nginx
const logs = await ssh.docker.runNginx({
  name: 'اسم-الحاوية',
  ports: [
    {
      from: 443, // منفذ الحاوية
      to: 30123 // منفذ المضيف
    }
  ],
  bindings: [
    {
      from: '/usr/source/config', // مجلد الحاوية
      to: '/path/to/config/folder', // مجلد المضيف
      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()