@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 = '/path/to/source/folder'
const imageName = 'image-name'
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: 'container-name',
  image: imageName,
  version: version,
  ports: [
    {
      from: 443, // منفذ الحاوية
      to: 30123 // منفذ المضيف
    }
  ],
  bindings: [
    {
      from: '/usr/source/config', // مجلد الحاوية
      to: '/path/to/config/folder', // مجلد المضيف
      readOnly: true // اختياري، الافتراضي هو false
    }
  ]
})

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

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

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

// حذف حاوية docker
await ssh.docker.remove('container-name')

// حذف صورة docker
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('container-name', '/path/to/source', {
  port
})

// تشغيل Nginx
const logs = await ssh.docker.runNginx({
  name: 'container-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()