#python #php #docker
#python #php #docker
Вопрос:
Я пытаюсь настроить контейнер docker с помощью php-apache и python. Это в первую очередь для веб-приложения php. Для части функциональности я написал скрипт на python, который использует библиотеку python, которая выполняет функции, которые я не смог найти с помощью php. В противном случае я бы просто попытался придерживаться php для всего. Я запускаю скрипт python с помощью команды php shell_exec. Все работает в моей локальной среде разработки; однако, когда я пытаюсь перейти к производству, возникают проблемы. В любом случае, я пытался часами (тонны исследований по этой теме), и я не могу понять, как установить Python в тот же контейнер Docker, что и php-apache. Вот пример Dockerfile, который я использовал:
FROM python:3.7
RUN apt-get update
RUN apt-get install python3.7
COPY requirements.txt ./
RUN pip3 install -r requirements.txt
FROM php:7.4.13-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql
При этой настройке я получаю «sh: 1: python: не найден».
Если я удалю последние две строки (php-apache), контейнер продолжает перезапускаться непрерывно (хотя в этом случае установлен python). Я пробовал много других примеров dockerfiles для python и в сочетании с php-apache ни один из них не работал.
Комментарии:
1. Вероятно, вам нужны два отдельных контейнера, один встроенный
FROM php:apache
и один встроенныйFROM python
. Простая оболочка Flask вокруг скрипта позволит обмениваться данными из одного контейнера в другой. Невозможно объединить два базовых образа.2. @DavidMaze Я пытаюсь, как вы предложили, создать два контейнера, один для php: apache и один для python. У меня настроены оба контейнера; однако контейнер python просто загружает требования, а затем отображает «exited with code 0». Может ли в этом помочь flask?
Ответ №1:
В итоге я воспользовался предложением @DavidMaze и настроил два отдельных контейнера, один для php: apache и один для python. Для контейнера python я создал простое приложение flask с конечными точками, которые при выполнении запроса GET запускают определенную функцию python. Я использовал PHP curl для связи с этим flask api из контейнера php: apache.