Я новичок в докере и не могу запустить свой скрипт на Python из NodeJs.
Кажется, что скрипт Python не отправляет данные обратно в JavaScript. Нужно ли что-нибудь добавлять в dockerfile для запуска python, например, добавлять его как новый контейнер?
Код NodeJ для вызова Python
app.get('/python', (req, res) => {
console.log('Welcome to python')
const childProcess=require("child_process");
const spawn = childProcess.spawn;
const pythonProcess = spawn('python -u',['preProcessing.py', 12, 17]);
console.log('Spawned to python')
pythonProcess.stdout.on('data', (data) => {
console.log(data.toString());
console.log("Child data: " + data);
});
pythonProcess.on('error', function () {
console.log("Failed to start child.");
});
pythonProcess.on('close', function (code) {
console.log('Child process exited with code ' + code);
});
pythonProcess.stdout.on('end', function () {
console.log('Finished collecting data chunks.');
});
console.log('Finally')
});
Простой скрипт на Python
import sys
print(sys.argv[1])
sys.stdout.flush()
Докер-Compose
version: '3'
services:
app:
container_name: docker-node-mongo
restart: always
build: .
ports:
- '80:3000'
links:
- mongo
mongo:
container_name: mongo
image: mongo
ports:
- '27017:27017'
volumes:
- data-volume:/data/db
volumes:
data-volume:
Терминальный выход
docker-node-mongo | MongoDB Connected
docker-node-mongo | GET / 304 12.989 ms - -
docker-node-mongo | Welcome to python
docker-node-mongo | Spawned to python
docker-node-mongo | Finally
docker-node-mongo | Failed to start child.
docker-node-mongo | Finished collecting data chunks.
docker-node-mongo | Child process exited with code -2
docker-node-mongo | GET /python - - ms - -
Должно быть напечатано «Дочерние данные: 12»