2017-09-25 4 views
0

Je voudrais créer un docker qui exécute un wget chaque minute dans un cron indéfiniment. Pour récupérer les fichiers téléchargés avec wget, je voudrais accéder via FTP. Le serveur FTP utilisé est vsftpd.Comment créer un docker qui exécute un wget sur cron et accéder aux fichiers téléchargés via ftp sur OpenShift?

Le docker local fonctionne bien et peut y accéder via FTP, mais lorsque le docker est déployé sur OpenShift, le conteneur ne démarre pas et crond et vsftpd ne s'exécutent pas.

Quels changements doivent faire sur ce docker pour fonctionner sur 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

Essayez-vous de l'exécuter sur OpenShift en ligne ou OpenShift Origin? –

+0

Votre image semble avoir besoin de '' root'' pour fonctionner. Les clusters OpenShift auraient normalement la capacité d'exécuter des images comme '' root'' désactivé. La possibilité d'exécuter des images en tant que '' root'' ne peut être accordée que par un administrateur de cluster. Pour déboguer localement ce qui se passe, utilisez '' docker run -u 100000'' pour forcer l'exécution du conteneur en tant qu'utilisateur non '' root''. Ensuite, vous pouvez voir comment cela se brise. –

+0

OpenShift Online – mabg

Répondre

0

Il semble que cron a toujours besoin de root, donc il ne peut pas démarrer sur OpenShift. Pour résoudre ce problème, j'ai changé cron par Supercronic.

Pour télécharger les données, j'utilise les outils clients OpenShift, en utilisant la commande oc rsync