Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Docker Compose Python/Flask容器添加PHP功能_Python_Php_Docker_Flask_Docker Compose - Fatal编程技术网

向Docker Compose Python/Flask容器添加PHP功能

向Docker Compose Python/Flask容器添加PHP功能,python,php,docker,flask,docker-compose,Python,Php,Docker,Flask,Docker Compose,我有一个基于烧瓶的webapp,内置Docker Compose,使用Gunicorn、Redis、芹菜和Postgres。应用程序需要调用用PHP编写的第三方数学函数,该函数将作为PHP文件托管在应用程序结构中。不幸的是,无法用Python重写此函数。因此,我需要让PHP在我的主webapp容器中运行,以便访问该文件。我已经准备好了相关的子流程代码,但是我正在努力解决如何让PHP在相关容器中运行的问题。重要文件如下: docker-compose.yml: version: '2' serv

我有一个基于烧瓶的webapp,内置Docker Compose,使用Gunicorn、Redis、芹菜和Postgres。应用程序需要调用用PHP编写的第三方数学函数,该函数将作为PHP文件托管在应用程序结构中。不幸的是,无法用Python重写此函数。因此,我需要让PHP在我的主webapp容器中运行,以便访问该文件。我已经准备好了相关的子流程代码,但是我正在努力解决如何让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:
以及Dockerfile:

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()"
检查应用程序中PHP的可用性:

php = os.system('php --version')
print(php)
返回:

php: not found
web_1       | 32512

有谁能告诉我如何让PHP在我的主web容器中与Python一起运行,以便我可以从Python代码中调用该函数吗?

如果您不需要提供PHP文件,只需要通过cli执行它,只需在容器中安装PHP即可。您可以通过在apt get命令中添加php在Dockerfile中执行此操作:

RUN apt-get update && apt-get install -qq -y \
  build-essential libpq-dev php --no-install-recommends

制作某种API而不是同时运行它们不是更好吗?为了在一个容器中运行多个服务,请查看此页面-
RUN apt-get update && apt-get install -qq -y \
  build-essential libpq-dev php --no-install-recommends