如何创建在cron上运行wget并在OpenShift上通过ftp访问下载文件的docker?

问题描述:

我想创建一个docker,无限期地在cron中每分钟运行一次wget。要恢复通过wget下载的文件,我想通过FTP访问。使用的FTP服务器是vsftpd。如何创建在cron上运行wget并在OpenShift上通过ftp访问下载文件的docker?

本地docker运行良好,可以通过FTP访问它,但是当Docker部署在OpenShift上时,容器不会启动,并且crond和vsftpd都不会运行。

该Docker在OpenShift上运行时必须做些什么?

Dockerfile:

FROM alpine:3.4 

RUN apk update && apk add vsftpd 

RUN adduser -h /home/./files -s /bin/false -D files 

RUN echo "local_enable=YES" >> /etc/vsftpd/vsftpd.conf \ 
    && echo "chroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf \ 
    && echo "write_enable=YES" >> /etc/vsftpd/vsftpd.conf \ 
    && echo "local_umask=022" >> /etc/vsftpd/vsftpd.conf \ 
    && echo "passwd_chroot_enable=yes" >> /etc/vsftpd/vsftpd.conf \ 
    && echo 'seccomp_sandbox=NO' >> /etc/vsftpd/vsftpd.conf \ 
    && echo 'pasv_enable=Yes' >> /etc/vsftpd/vsftpd.conf \ 
    && echo 'pasv_max_port=10100' >> /etc/vsftpd/vsftpd.conf \ 
    && echo 'pasv_min_port=10090' >> /etc/vsftpd/vsftpd.conf \ 
    && sed -i "s/anonymous_enable=YES/anonymous_enable=NO/" /etc/vsftpd/vsftpd.conf 

RUN apk update && \ 
    apk add wget && \ 
    rm -rf /var/cache/apk/* 

COPY myScript /bin/myScript 
COPY cron /var/spool/cron/crontabs/root 
RUN chmod +x /bin/myScript 

RUN echo "files:mypassword" |/usr/sbin/chpasswd 
RUN chown files:files /home/files/ -R 

EXPOSE 20 21 10090-10100 

VOLUME /home/files 

CMD /usr/sbin/crond -l 2 -L /var/log/cron.log | /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 

的cron:

* * * * * /bin/myScript 

myScript的:

#!/bin/sh 
wget -P /home/files -nv http://www.google.com >> /var/log/cron.log 2>&1 
+0

你是不是想在OpenShift在线或OpenShift地跑的? –

+0

你的图像看起来像需要“root”才能工作。 OpenShift集群通常有能力运行图像作为“root”被禁用。只能由群集管理员授予以“root”身份运行映像的能力。为了在本地调试正在发生的事情,使用docker run -u 100000强制容器作为非root用户运行。那么你可能会看到它是如何破坏的。 –

+0

OpenShift Online – mabg

看来cron总是需要root,所以它不能在OpenShift上启动。为了解决这个问题,我改变了cron Supercronic

下载数据,我使用的是openshift客户端工具,使用​​命令