Запуск кода Python вне контейнера Docker - PullRequest
0 голосов
/ 18 января 2019

Я не могу запустить код Python через мое приложение Meteor.

Я новичок в работе с докером, и я только что понял принцип работы контейнеров. Использование Meteor up ! Я развернул базовое приложение Meteor на своем сервере.

Это приложение развернуто с помощью Docker. Моя цель этого приложения состоит в том, чтобы вызвать код Python. Я могу запустить код python в терминале через SSH, но при попытке запустить его из Meteor он не может найти python3.

Что будет хорошей практикой для запуска кода Python из приложения метеора?

    const Future = Npm.require("fibers/future");
    // Load exec
    const exec = Npm.require("child_process").exec;
    // This method call won't return immediately, it will wait for the
    // asynchronous code to finish, so we call unblock to allow this client
    // to queue other method calls (see Meteor docs)
    console.log('before unblock');
    this.unblock();
    console.log('starting futures');
    const future = new Future();
    const command = `python3 ~/python_project/run.py '${fileName}' '${name}'`;
    console.log('before execution');
    exec(command,function(error,stdout,stderr) {
        console.log('during execution');
        if (error) {
            console.log(error);
            throw new Meteor.Error(500,command+" failed");
        }
        future.return(stdout.toString());
    });
    console.log('after execution');
    return future.wait();
}

Глядя на логи Docker, он теперь возвращает / bin / sh: 1: python3: not found Поскольку python3 установлен правильно и работает через ssh, я предполагаю, что он запускает код внутри метеорного контейнера.

ОБНОВЛЕНИЕ 1: Я попытался добавить Python в свой контейнер. Я добавил следующие команды в док-систему buildInstructions: 'RUN apt-get update && apt-get -y upgrade && apt-get install -y python3-pip && pip3 install setuptools' После этого я попытался запустить мой setup.py из проекта, потому что не смог найти доступ к файлам моего проекта Python из сценария.

В настоящее время я ищу способ запустить мой файл setup.py из проекта meteor без какого-либо успеха. Есть мысли о том, как поступить?

1 Ответ

0 голосов
/ 24 января 2019

Мое окончательное решение, которое исправило мои проблемы, было следующей установкой:

Python docker-compose с Flask, чтобы сделать код доступным. Использование двух томов для обоих проектов, указывающих на одну и ту же папку, для совместного использования данных, необходимых для выполнения расчетов в Python.

После расчетов я вернул результаты в формате JSON в приложение Meteor, чтобы результаты могли быть импортированы в базу данных Mongo.

Надеюсь, это поможет любому, кто столкнулся с той же проблемой! И спасибо всем, кто помог понять, как решить эту проблему.

...