Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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
Cron python作业和Docker日志_Python_Docker_Cron_Stdout - Fatal编程技术网

Cron python作业和Docker日志

Cron python作业和Docker日志,python,docker,cron,stdout,Python,Docker,Cron,Stdout,我有一个Python脚本,作为cron作业在docker容器中运行,我希望在docker日志中看到stdout,例如,我的脚本中有以下行 print("BT: " + bt) 我希望在运行docker logs some container 我的cron工作如下 * * * * * root /usr/local/bin/python /opt/platform-location/platform-location.py >> /var/log/cron.log 2>&

我有一个Python脚本,作为cron作业在docker容器中运行,我希望在docker日志中看到stdout,例如,我的脚本中有以下行

print("BT: " + bt)
我希望在运行
docker logs some container
我的cron工作如下

* * * * * root /usr/local/bin/python /opt/platform-location/platform-location.py >> /var/log/cron.log 2>&1
我正在Dockerfile中运行
cron
,如下所示:

FROM python:3

WORKDIR /opt/platform-location
COPY requirements.txt requirements.txt
COPY URLs.txt URLs.txt
COPY platform-location.py   platform-location.py
COPY platform-location.cron /etc/cron.d/platform-location
RUN pip install -r requirements.txt
RUN chmod 0644 /etc/cron.d/platform-location
RUN touch /var/log/cron.log
RUN apt-get update && apt-get upgrade -y && apt-get -y install cron vim
CMD cron && tail -f /var/log/cron.log
你能帮帮我吗

PS:它与Python在Docker中的登录不同,因为我希望在运行Docker logs命令而不是Docker exec命令时看到输出。
另外,我使用的是cron,而另一位问题报告员没有使用。

问题不在于python脚本,您是否验证了没有python的cron日志,用于
CMD cron&&tail-f/var/log/cron.log

使用下图,我确信上面的代码片段可以正常工作,但是cron无法将日志写入控制台,因此python也不会写入日志

下面是一个工作示例

FROM python:3.7-alpine3.9
COPY test.py /test.py
RUN cat /test.py
RUN echo "* * * * * echo hello" | crontab - 

RUN echo "* * * * * python /test.py" | crontab -

CMD ["crond","-f"]
test.py

my_string = "Hello, World!"
print(my_string)
该图像包含Python版本
3.7.4
。如果基于alpine,则可以将基础图像更改为任何可以正常工作的图像

更新: 仔细检查指定位置上的python文件是否存在,因为这里是可以尝试的工作示例

FROM python:3.6
RUN apt-get update && apt-get -y install cron vim

WORKDIR /opt/platform-location
RUN echo "* * * * * root /usr/local/bin/python /opt/platform-location/platform-location.py >> /var/log/cron.log 2>&1" >> /etc/cron.d/platform-location
RUN echo 'print ("hello World! ")' >> /opt/platform-location/platform-location.py
RUN chmod 0644 /etc/cron.d/platform-location
RUN touch /var/log/cron.log
CMD cron && tail -f /var/log/cron.log

可能与@hampusralson重复不,不是,我想在运行docker logs命令而不是docker exec命令时查看输出谢谢,我无法使用您的解决方案,因为我没有使用crontab。我修改了我的问题以包括我的Dockerfile。请你再检查一下,告诉我该换什么好吗?顺便问一下,为什么?我认为crontab和cron之间没有这么大的区别?