Node.JS Server¶
Данная конфигурация подходит если проект использует окружение node.js и пакетный менеджер npm. В этом случае проект может быть написан на таких языках как JavaScript или TypeScript. Данная конфигурация предназначена для серверных приложений. Для браузерных приложений см. Node.JS Browser.
Написать yaml файл можно как самостоятельно, используя инструкцию ниже, так и воспользоваться нашим генератором yaml, перейдя по ссылке.
Секция meta¶
Секция meta
файла amvera.yml
будет выглядеть следующим образом:
meta:
environment: node
toolchain:
name: npm
version: 18
Из параметров, которые можно здесь менять это meta.toolchain.version
. Логически это версия node.js, которую нужно использовать для работы. Технически значение version
подставляется в имя образа Docker, который будет использован.
Как для фазы сборки, так и для фазы запуска используется образ node:${meta.toolchain.version}
. Так как для обеих фаз используется один и тот же образ, meta.toolchain.version
может быть любым тегом этого образа на докер хабе.
Секция build¶
Секция build
может содержать следующие необязательные параметры:
skip
additionalCommands
artifacts
Параметр skip
может использоваться если у проекта нет зависимостей и/или отсутствует файл package.json
. Указание skip: yes
будет означать, что фаза сборки будет целиком пропущена.
Во время сборки скрипт выполняет команду npm install
. Если нужно выполнить дополнительные команды (например, npm run build
), используется параметр additionalCommands
:
build:
additionalCommands: npm run build
В этом случае во время сборки будет выполнена команда npm install && npm run build
.
Параметр artifacts
позволяет указать какие файлы должны попасть в итоговое приложение. По умолчанию будут скопированы все файлы в корень папки приложения.
Параметр artifacts
в отличие от других параметров это не строка, а словарь. Ключ в нем это маска файлов источника копирования, а значение: папка, в которую будут скопированы файлы.
Так, значение artifacts
по умолчанию:
build:
artifacts:
"*": /
Мы используем следующие правила копирования:
в качестве источника указываются только относительные пути (без / в начале);
если под маску попал файл, файл будет скопирован в папку назначения без исходного пути;
если под маску попала папка, она будет скопирована целиком в папку назначения вместе со всем содержимым.
Секция run¶
Секция run
может содержать следующие параметры:
scriptName
scriptArguments
nodeArguments
command
persistenceMount
persistenceMount
Параметр scriptName
является обязательным.
Для запуска используется команда node ${run.nodeArguments} ${run.scriptName} ${run.scriptArguments}
.
Параметр scriptName
это путь до скрипта, который нужно запустить, относительно корня репозитория.
run:
scriptName: index.js
Если нужно передать дополнительные аргументы node
для запуска, их нужно указать в параметре nodeArguments
.
Если нужно передать дополнительные аргументы сприкту для запуска, их нужно указать в параметре scriptArguments
.
Параметр command
это альтернативный способ запустить приложение. При использовании этого параметра игнорируются параметры scriptName
, scriptArguments
и nodeArguments
. Он должен содержать полную команду запуска:
run:
command: npm run start
Параметр persistenceMount
позволяет указать, в какую директорию будет примонтирована папка с постоянным хранилищем.
По умолчанию имеет значение /data
.
Параметр containerPort
позволяет указать какой порт слушает приложение. По умолчанию имеет значение 80
.
Рецепты¶
Минимальный файл amvera.yml¶
meta:
environment: node
toolchain:
name: npm
version: 18
run:
scriptName: index.js
Приложение на Express.JS¶
meta:
environment: node
toolchain:
name: npm
version: 18
run:
scriptName: index.js
containerPort: 3000
Приложение с фазой сборки (Webpack, tsc и т.п.)¶
Данный файл предполагает, что скрипт запуска сборки прописан в задаче build
, а также скрипт запуска приложения прописан в задаче start
в файле package.json
meta:
environment: node
toolchain:
name: npm
version: 18
build:
additionalCommands: npm run build
run:
command: npm run start
containerPort: 3000