Trong khi searching cho vấn đề này tôi thấy rằng: cron -f
nên bắt đầu dịch vụ.Tại sao dịch vụ cron trong Dockerfile không chạy?
Vì vậy, tôi có:
RUN apt-get install -qq -y git cron
Tiếp theo, tôi có:
CMD cron -f && crontab -l > pullCron && echo "* * * * * git -C ${HOMEDIR} pull" >> pullCron && crontab pullCron && rm pullCron
dockerfile tôi triển khai mà không có lỗi nhưng cron không chạy. Tôi có thể làm gì để bắt đầu dịch vụ cron với một dòng bổ sung?
PS:
Tôi biết rằng chức năng git trong cron của tôi thực sự phải là một cái móc, nhưng đối với tôi (và có lẽ đối với những người khác) này là về tìm hiểu cách đặt crons với Docker :-)
PPS :
Hoàn Dockerfile (UPDATED):
RUN apt-get update && apt-get upgrade -y
RUN mkdir -p /var/log/supervisor
RUN apt-get install -qq -y nginx git supervisor cron wget
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN wget -O ./supervisord.conf https://raw.githubusercontent.com/..../supervisord.conf
RUN mv ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN apt-get install software-properties-common -y && apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 && add-apt-repository 'deb http://dl.hhvm.com/ubuntu utopic main' && apt-get update && apt-get install hhvm -y
RUN cd ${HOMEDIR} && git clone ${GITDIR} && mv ./tybalt/* ./ && rm -r ./tybalt && git init
RUN echo "* * * * * 'cd ${HOMEDIR} && /usr/bin/git pull origin master'" >> pullCron && crontab pullCron && rm pullCron
EXPOSE 80
CMD ["/usr/bin/supervisord"]
PPPs:
Supervisord.conf:
[supervisord]
autostart=true
autorestart=true
nodaemon=true
[program:nginx]
command=/usr/sbin/nginx -c /etc/nginx/nginx.conf
[program:cron]
command = cron -f -L 15
autostart=true
autorestart=true
Bản sao: http://stackoverflow.com/questions/20545554/how-do-i-start-cron-on-docker-ubuntu-base – Armand
Xin chào @Armand, tôi đã tìm thấy câu trả lời này, nhưng tôi không ' Tôi hiểu nó trùng lặp như thế nào? Đây thực sự là câu hỏi khiến tôi thêm 'cron -f' vào cuối' CMD' nhưng điều này dường như không chạy –
Docker khởi tạo một cá thể bằng cách sử dụng một tiến trình đơn lẻ. Bạn có thể giải thích như trong lệnh nào bạn bắt đầu dụ với bạn không? Những gì tôi đã học được là nếu bạn cần nhiều tiến trình đang chạy, bạn nên cân nhắc việc chạy trình giám sát từ dòng lệnh và làm cho nó có trách nhiệm cho phép các tiến trình hệ thống bạn muốn có sẵn. – Armand