2017-01-06 2 views
0

Я пытаюсь целый день найти какое-то решение, как запустить два сценария, написанных в nodejs, параллельных в докере.docker> запустить два скрипта nodejs с помощью gulp и nodemon

Я два файла: приложения/index.js - экспресс-приложение использует порт 8080 приложения/rabbit.js - скрипт подключение к RabbitMQ только как потребитель и обработке сообщений

Я пытаюсь использовать проглатывать и nodemon (я нашел решение на StackOverflow, но идентификатор не работает)

var gulp = require('gulp') 
var gulputil = require('gulp-util'); 
var child_process = require('child_process'); 
var nodemon = require('gulp-nodemon'); 

var processes = {server1: null, server2: null}; 

gulp.task('start:server', function (cb) { 

processes.server1 = nodemon({ 
    script: "app/index.js", 
    ext: "js" 
}); 

processes.server2 = nodemon({ 
    script: "app/rabbit.js", 
    ext: "js" 
}); 

cb(); // For parallel execution accept a callback. 
     // For further info see "Async task support" section here: 
     // https://github.com/gulpjs/gulp/blob/master/docs/API.md 
}); 

process.on('exit', function() { 
// In case the gulp process is closed (e.g. by pressing [CTRL + C]) stop both processes 
processes.server1.kill(); 
processes.server2.kill(); 
}); 

gulp.task('run', ['start:server']); 
gulp.task('default', ['run']); 

Это всегда работает второй сценарий «приложение/rabbit.js» дважды. Я открыт для любого решения, но мне нужно запустить сразу два скрипта nodejs в одном экземпляре docker.

Любые идеи? Спасибо заранее!

ответ

0

Для тех, у кого будет такая же проблема, я нашел решение.

Шаг 1:

Create two docker files Dockerfile-api, Dockerfile-messages 
As command RUN in the dockerfile use 
    a. CMD ["npm", "run", "start-api"] 
    b. CMD ["npm", "run", "start-messages"] 

Шаг 2:

In the package.json add lines: 
"scripts": {  
    "start-api": "gulp --gulpfile app/gulpfile-api.js", 
    "start-messages": "gulp --gulpfile app/gulpfile-messages.js" 
    } 

Шаг 3:

Obviously create two gulp files, each gulp file will have his own script. 

Шаг 4:

Create two services in docker-compose.yml file each witch different DockerFile 

Этап 5:

Run docker-compose up 
Смежные вопросы