Я развертываю node.js веб-приложение в пользовательской среде исполнения с гибкой средой. Я вызываю child_process в Node.js, чтобы открыть python3 следующим образом:
const spawn = require("child_process").spawn;
pythonProcess = spawn('python3');
, который прекрасно работает локально , но при развертывании в GAE выдает ошибку как таковую:
Error: spawn python3 ENOENT
at Process.ChildProcess._handle.onexit (child_process.js:240)
at onErrorNT (internal/child_process.js:415)
at process._tickCallback (next_tick.js:63)
Однако, когда я запускаю python2, он работает нормально.
После некоторых исследований и копаний я наткнулся на этот вопрос о stackoverflow
Как установить Python3 в Google Cloud Platform для приложения Node
Кажется, мне нужно что-то сделать с сборкой пользовательской среды выполнения из файла docker для разрешения нескольких сред выполнения (что-то в этом роде).
Я пробовал множество вещей с файлом docker, таким как:
# Trying to install python3
FROM ubuntu as stage0
WORKDIR /python/
RUN apt-get update || : && apt-get install --yes python3;
RUN apt-get install python3-pip -y
# My main node.js docker stuff
FROM gcr.io/google_appengine/nodejs
COPY . /app/
... etc
и
# From google app engine python runtime docker repo
FROM gcr.io/google-appengine/python
RUN virtualenv /env
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
ADD . /app
# My main node.js docker stuff
FROM gcr.io/google_appengine/nodejs
COPY . /app/
... etc
что ничего из этого не сработало.
Как правильно это сделать и как я могу это сделать?
Спасибо.