2017-09-25 20 views
0

我想創建一個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

回答

0

看來cron總是需要root,所以它不能在OpenShift上啓動。爲了解決這個問題,我改變了cron Supercronic

下載數據,我使用的是openshift客戶端工具,使用​​命令

相關問題