Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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中的cron不是';当执行crontab-l时,cron job会显示_Docker_Flask_Cron - Fatal编程技术网

docker中的cron不是';当执行crontab-l时,cron job会显示

docker中的cron不是';当执行crontab-l时,cron job会显示,docker,flask,cron,Docker,Flask,Cron,我正在尝试一个cron作业,它每分钟都会调用我的flask应用程序的端点。构建并运行映像后,如果运行crontab-l,我可以看到作业,但我的flask没有报告任何调用。知道为什么吗?感谢您的帮助!这是设置 Dockerfile: FROM python:3 WORKDIR /app COPY . /app RUN apt-get update && apt-get install -y cron curl RUN pip install --trusted-host pypi.

我正在尝试一个cron作业,它每分钟都会调用我的flask应用程序的端点。构建并运行映像后,如果运行
crontab-l
,我可以看到作业,但我的flask没有报告任何调用。知道为什么吗?感谢您的帮助!这是设置

Dockerfile:

FROM python:3
WORKDIR /app
COPY . /app
RUN apt-get update && apt-get install -y cron curl
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 13800
RUN chmod -v +x start.sh
CMD ["./start.sh"]
下面是start.sh中的内容:

#!/bin/sh
/usr/bin/crontab periodicGossipInvoker
# start cron
service cron start
# Flask
python main.py
以下是periodicGossipInvoker中的内容:

* * * * * sleep 10; /usr/bin/curl http://0.0.0.0:13800/dict
以下是跑步路线:

$ docker run --name="node1"        --net=kv_subnet     \
>            --ip=10.10.0.2        -p 13802:13800      \
>            -e ADDRESS="${addr1}"                     \
>            -e VIEW=${initial_full_view}              \
>            -e REPL_FACTOR=2                          \
>            kv-store:4.0
Starting periodic command scheduler: cron.
 * Serving Flask app "main" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:13800/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 104-728-720
问题是,flask应用程序从未收到来自cron作业的任何调用,即使我看到了cron作业

docker exec -ti 556 crontab -l
* * * * * sleep 10; /usr/bin/curl http://0.0.0.0:13800/dict

我不熟悉docker或flask;但是你不应该做一些类似于:
/usr/bin/curl的事情吗http://0.0.0.0:13800/dict >/my/home/dir/output file
@Roadowl是的,如果没有办法用flask监视传入的请求,我会这样做,但是因为flask在收到请求时显示类似于
127.0.0.1-[27/Nov/2019 20:08:11]“GET/dict HTTP/1.1”200-
(我通过执行
dockerexec-ti556/usr/bin/curl对其进行了测试http://0.0.0.0:13800/dict
)我跳过了这一步。不过感谢你的帮助!这个怎么样:
sleep 10&&/usr/bin/curlhttp://0.0.0.0:13800/dict
0.0.0.0
在curl命令中不是有效的IP地址。请求应为
/usr/bin/curlhttp://127.0.0.1/dict
如果应用程序与cron守护程序在同一容器中运行。但是is违反了每个容器1个进程的规则。实际上,cron部分应该在一个容器中运行,而flask应用程序应该在另一个容器中运行。@Roadowl刚刚尝试过它,也尝试过只进行睡眠,但都没有成功