У меня есть Flask веб-приложение на основе встроенного Docker Создание с использованием Gunicorn, Redis, Celery и Postgres. Приложению необходимо вызвать стороннюю математическую функцию, которая написана на PHP и будет размещена в структуре приложения в виде файла PHP. К сожалению, невозможно переписать эту функцию в Python. Поэтому мне нужно, чтобы PHP работал внутри моего основного контейнера веб-приложения, чтобы я мог получить доступ к файлу. У меня готов соответствующий код подпроцесса, но я не могу понять, как запустить PHP в соответствующем контейнере. Важные файлы:
docker -compose.yml:
version: '2'
services:
postgres:
image: 'postgres:9.5'
restart: always
env_file:
- '.env'
volumes:
- 'postgres:/var/lib/postgresql/data'
ports:
- '5432:5432'
redis:
image: 'redis:3.0-alpine'
command: redis-server --requirepass devpassword
volumes:
- 'redis:/var/lib/redis/data'
ports:
- '6379:6379'
web:
image: my_app_web:rv19
build: .
restart: always
command: >
gunicorn -c "python:config.gunicorn" --reload --timeout 5 "my_app.app:create_app()"
env_file:
- '.env'
volumes:
- '.:/my_app'
ports:
- '8000:8000'
depends_on:
- postgres
links:
- redis
- celery
celery:
build: .
command: celery worker -B -l info -A my_app.blueprints.contact.tasks
env_file:
- '.env'
volumes:
- '.:/my_app'
links:
- redis
depends_on:
- redis
volumes:
postgres:
redis:
И файл Docker:
FROM python:3.7-slim
MAINTAINER AAAAA AAAAA <aaaa@aaaa.a>
RUN apt-get update && apt-get install -qq -y \
build-essential libpq-dev --no-install-recommends
ENV INSTALL_PATH /my_app
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
RUN pip install --editable .
CMD gunicorn -c "python:config.gunicorn" "my_app.app:create_app()"
.env file:
COMPOSE_PROJECT_NAME=my_app
POSTGRES_USER=my_app
POSTGRES_PASSWORD=devpassword
PYTHONUNBUFFERED=true
Проверка доступности PHP в приложении:
php = os.system('php --version')
print(php)
возвращает:
php: not found
web_1 | 32512
Может кто-нибудь, пожалуйста, посоветуйте, как я могу запустить PHP рядом с Python в моем основном веб-контейнере, чтобы я мог вызывать функцию из моего Python кода?