繁体   English   中英

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

[英]Add PHP functionality to Docker Compose Python/Flask Container

我有一个使用 Gunicorn、Redis、Celery 和 Postgres 在 Docker Compose 中构建的基于 Flask 的 web 应用程序。 应用程序需要调用用 PHP 编写的第 3 方数学函数,并将作为 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()"

.env 文件:

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 在我的主 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM