gpt4 book ai didi

python - 在python docker中启动php

转载 作者:行者123 更新时间:2023-12-02 20:04:32 27 4
gpt4 key购买 nike

我对此docker-compose有问题

version: '3'

services:
app:
image: php:7
command: php -S 0.0.0.0:8000 /app/get_count_of_day.php
ports:
- "8000:8000"
volumes:
- .:/app

composer:
restart: 'no'
image: composer/composer:php7
command: install
volumes:
- .:/app

python:
image: python:3
command: bash -c "pip3 install -r /app/requirements.txt && celery worker -l info -A cron --beat --workdir=/app/python"
links:
- redis
volumes:
- .:/app
depends_on:
- app

redis:
image: 'redis:3.0-alpine'
command: redis-server
ports:
- "6379:6379"

我的 celery 任务
import os


from celery import Celery
from celery.schedules import crontab

os.chdir("..")
app = Celery(broker='redis://redis:6379/0')

@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(10.0, run_cron.s(), name='add every 10')

@app.task
def run_cron():
os.system("/usr/local/bin/php index.php")

我的错误是找不到php

python_1    | sh: 1: /usr/local/bin/php: not found
python_1 | [2018-06-15 15:08:29,491: INFO/ForkPoolWorker-2] Task cron.run_cron[e7c338c1-7b9c-4d6f-b607-f4e354fbd623] succeeded in

0.003908602000592509s: None python_1 | [2018-06-15 15:08:39,487: INFO/Beat] Scheduler: Sending due task add every 10 (cron.run_cron)



但是如果我手动去docker

docker exec -i -t 1ff /bin/bash



我在目录中找到了php

最佳答案

来自容器“app”的二进制文件未在容器“python”中公开,这是 docker 的MO。要运行index.php脚本,您可以通过http请求curl http://app/index.php打开此页面,也可以通过urllib2requests在python中完全执行此操作(我建议使用最后一个选项)。

但是如果您的请求因找不到app域而失败,则下面的原始答案是您的解决方案。

万一您必须在app容器内执行更复杂的操作,您应该真正考虑通过内部API或诸如此类进行公开,但是据我所知,docker容器应该只做一件事。如果您需要在php容器中运行一些复杂的shell脚本-您将违反这一原则。 app容器用于提供php页面,因此它应该做到这一点。

作为最后的选择,您可以完全利用Docker,例如,将 celery 容器中的Docker控制套接字暴露在 celery 容器中,然后直接向其他容器发出命令。这可能是非常危险的,并且在文档中不建议使用,但是您做到了;)

[编辑:原本误读的问题...]

在默认的docker网络中,您无法按名称寻址容器。加

networks:
my-net:

到docker-compose的末尾和
networks:
- my-net

到需要互相交谈的每个容器。

关于python - 在python docker中启动php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com