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



我有一个基于Flask的webapp,使用Gunicorn,Redis,Celery和Postgres在Docker Compose中构建。应用需要调用用 PHP 编写的第 3 方数学函数,并将作为 PHP 文件托管在应用结构中。不幸的是,不可能用Python重写这个函数。因此,我需要让 PHP 在我的主 Web 应用程序容器中运行,以便我可以访问该文件。我已经准备好了相关的子流程代码,但正在努力让 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

任何人都可以建议我如何在我的主Web容器中让PHP与Python一起运行,以便我可以从我的Python代码调用该函数吗?

如果你不需要提供 php 文件,只通过 cli 执行它,只需在容器中安装 php。你可以在 Dockerfile 中通过在apt-get命令中添加php来做到这一点:

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

最新更新