Как настроить контейнер Docker и Dockerfile с помощью php-apache и python?

#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.