如何在alpine linux docker容器上运行crond和vsftpd?

时间:2017-09-14 22:50:41

标签: docker

我想在docker容器上运行crond和vstfpd。

首先,我创建了一个alpine-vstfpd docker容器:

  python id3.py /path/to/filename.csv

接下来,我创建了另一个使用前一个容器的容器:

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
VOLUME /home/files
EXPOSE 20 21 10090-10100

当容器启动时,只运行crond。如果切换命令,只运行vsftpd:

FROM alpine-vsftpd
COPY myScript /bin/myScript
COPY root /var/spool/cron/crontabs/root
RUN chmod +x /bin/myScript
CMD /usr/sbin/crond -f -l 2 -L /var/log/cron.log && /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

尝试使用中间脚本,发生相同,只运行第一个:

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

entrypoint.sh:

FROM alpine-vsftpd
COPY myScript /bin/myScript
COPY root /var/spool/cron/crontabs/root
RUN chmod +x /bin/myScript
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
CMD /entrypoint.sh

现在只运行crond。如果换行,只运行vsftpd。

为什么只运行第一个? 如何运行?

1 个答案:

答案 0 :(得分:1)

将一个任务作为后台任务运行,另一个作为主要前台任务:

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

另外(这可能相当晚,但如果以后它会帮助某人),我忘了提及Supervisor也可用于运行多个进程。