Skip to content

Docker Plugin

Плагин для интеграции с Docker.

Установка

sh
npm install @runium/plugin-docker
sh
yarn add @runium/plugin-docker
sh
pnpm add @runium/plugin-docker

Возможности

Плагин позволяет использовать Docker для запуска задач.

Задачи

Плагин добавляет новые типы задач:

  • docker - для запуска через Docker
  • docker-compose - для запуска через Docker Compose

Новые задачи имеют схожие с обычными задачами конфигурации, отличаясь только типом и набором опций.

TIP

Подробнее о конфигурации задач плагина см. в разделе Задачи.

Пример

Docker

Пример задачи для запуска веб-сервера Nginx с пробросом портов и монтированием статических файлов:

json
{
  "id": "nginx-server",
  "type": "docker",
  "options": {
    "image": "nginx:alpine",
    "containerName": "my-nginx-server",
    "ports": ["8080:80", "8443:443"],
    "volumes": [
      "./html:/usr/share/nginx/html:ro",
      "./nginx.conf:/etc/nginx/nginx.conf:ro"
    ],
    "env": {
      "NGINX_HOST": "localhost",
      "NGINX_PORT": "80"
    },
    "autoRemove": true,
    "log": {
      "stdout": "./logs/nginx.log",
      "stderr": "./logs/nginx-error.log"
    }
  }
}

Docker Compose

Пример задачи для запуска веб-приложения с Nginx и базой данных MariaDB:

json
{
  "id": "web-app-stack",
  "type": "docker-compose",
  "options": {
    "services": {
      "nginx": {
        "image": "nginx:alpine",
        "containerName": "web-nginx",
        "ports": ["80:80", "443:443"],
        "volumes": [
          "./html:/usr/share/nginx/html:ro",
          "./nginx/conf.d:/etc/nginx/conf.d:ro"
        ],
        "dependsOn": ["mariadb"]
      },
      "mariadb": {
        "image": "mariadb:latest",
        "containerName": "web-mariadb",
        "environment": {
          "MYSQL_ROOT_PASSWORD": "rootpassword",
          "MYSQL_DATABASE": "webapp",
          "MYSQL_USER": "webuser",
          "MYSQL_PASSWORD": "webpassword"
        },
        "volumes": [
          "db-data:/var/lib/mysql",
          "./init.sql:/docker-entrypoint-initdb.d/init.sql:ro"
        ],
        "expose": ["3306"]
      }
    },
    "volumes": {
      "db-data": {}
    },
    "log": {
      "stdout": "./logs/docker-compose.log",
      "stderr": "./logs/docker-compose-error.log"
    }
  }
}