我有一个运行cron作业的容器存在问题。这项工作执行管理员删除一些elasticsearch指数。我已经阅读了许多类似的帖子,但我仍然没有得到它。这项工作似乎称为策展人,但索引不会被删除。如果我手动运行它,相同的命令工作。作为容器中的cron作业的馆长不能正常工作
这是我Dockerfile
FROM ubuntu:xenial
RUN apt-get update && apt-get install python-pip rsyslog -y
RUN groupadd -r curator && useradd -r -g curator curator
RUN pip install elasticsearch-curator
RUN apt-get install cron
COPY delete_indices_cron /etc/cron.d/delete_indices_cron
COPY ./delete_indices.sh /opt/delete_indices.sh
COPY ./configs /opt/config
RUN ["crontab", "/etc/cron.d/delete_indices_cron"]n
RUN chmod 644 /etc/cron.d/delete_indices_cron
RUN chmod 744 /opt/delete_indices.sh
RUN touch /var/log/cron.log
CMD ["rsyslogd"]
ENTRYPOINT ["cron","-f","&&", "tail","-f","/var/log/cron.log"]
我
docker run -d --link elasticsearch:elasticsearch --name curator mycurator4
和泊坞窗PS输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eea96a48aa3a mycurator4 "cron -f && tail -f /" 15 minutes ago Up 15 minutes curator
e584c9b090c8 vagrant-registry.vm:5000/sslserver "python /sslServer/ss" 2 weeks ago Up 2 weeks 0.0.0.0:12121->12121/tcp sslserver
20eee9943664 kibana:4 "/docker-entrypoint.s" 2 weeks ago Up 2 weeks 0.0.0.0:5601->5601/tcp kibana
8c462586982e logstash:2 "/docker-entrypoint.s" 2 weeks ago Up 2 weeks 0.0.0.0:5044->5044/tcp, 0.0.0.0:12201->12201/tcp, 0.0.0.0:12201->12201/udp logstash
c971fa3e357b elasticsearch:2 "/docker-entrypoint.s" 2 weeks ago Up 2 weeks 0.0.0.0:9200->9200/tcp, 9300/tcp elasticsearch
4af9a78a4b1f jenkins "/bin/tini -- /usr/lo" 2 weeks ago Up 2 weeks 0.0.0.0:8080->8080/tcp, 50000/tcp
jenkins
UPDATE运行映像之后:问题是,馆长不能被发现作为环境中的命令。当我将它改为相对路径时,问题就解决了。也基于一些建议,我从/opt/delete_indices.sh中删除了.sh,因为ansible“不喜欢这个”!
Hi @Nick。我遵循https://www.ekito.fr/people/run-a-cron-job-with-docker/中的例子,当我运行它时,我没有问题。顺便说一句,我改变了入口点只保留cron -f。毕竟没有区别。码头日志什么也没有返回。从系统日志我有这样的行:CRON [101]:(root)CMD(/opt/delete_indices.sh 2>&1)\ n CRON [100] :(CRON)info(没有MTA安装,丢弃输出)。另外,如果我按照你的建议做,我是否需要在图像中设置入口点? – b10n1k