使用python中的php启动

2024-03-29 09:49:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对这个码头工人有意见

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"

我的芹菜任务

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")

找不到我的错误

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)

但如果我用手去码头

^{2}$

我在目录中找到了php


Tags: runimageimportredisaddapptaskos
1条回答
网友
1楼 · 发布于 2024-03-29 09:49:59

容器“app”中的二进制文件不会在容器“python”中公开,这是docker的任务。要运行index.php脚本,您可以通过http请求打开此页:curl http://app/index.php,或者通过urllib2requests在python中完全执行相同的操作(我建议最后一个选项)。你知道吗

但是如果您的请求因为找不到app域而失败,那么下面的原始答案就是您的解决方案。你知道吗

如果您必须在app容器内执行更复杂的操作,您应该考虑通过内部API或类似的方式公开这些操作,但据我所知,docker容器应该只做一件事。如果您需要在php容器中运行一些复杂的shell脚本,那么您就违反了这个原则。app容器是为php页面提供服务的,所以它应该做到这一点。你知道吗

作为最后的手段,你可以完全破解docker,例如暴露你芹菜容器内的docker控件套接字,并直接向其他容器发出命令。在文档中,这可能非常危险,也非常不鼓励,但你确实如此;)

[编辑:最初误读的问题…]

在默认docker网络中,不能按名称对容器寻址。添加

networks:
    my-net:

到docker的结尾

networks:
    - my-net

每一个需要互相交谈的容器。你知道吗

相关问题 更多 >