Cron n'est pas en cours d'exécution lorsque je démarre mon conteneur docker

À la préface, j'ai été le référencement de ces deux articles pour vous aider:

Mon but est d'avoir une tâche cron démarrer automatiquement lorsque je démarre mon conteneur docker. Actuellement, il ne démarre pas automatiquement, mais je peux aller manuellement dans mon conteneur et exécuter service cron start, qui démarre le travail, et elle fonctionne correctement.

Le problème est donc de: Comment puis-je obtenir ma tâche cron pour démarrer automatiquement lorsque mon conteneur démarre?

Dockerfile

FROM microsoft/dotnet:latest
RUN apt-get update && apt-get install -y cron

COPY . /app

WORKDIR /app

ADD crontab /etc/cron.d/crontab
RUN chmod 0600 /etc/cron.d/crontab
RUN crontab -u root /etc/cron.d/crontab
RUN touch /var/log/cron.log

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000/tcp

CMD cron && tail -f /var/log/cron.log
CMD service cron start

crontab

* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
# Empty space

Si je n'étais pas en mesure d'obtenir cron de travail dans ce conteneur particulier, j'ai été capable de créer une application autonome docker conteneur spécialement pour cron, et a réussi à le faire fonctionner automatiquement.

Autant que la configuration du cron conteneur, j'ai suivi l'article lié, Exécuter une tâche cron avec Docker - Julien Boulay, et a été en mesure de le faire fonctionner.

Avez-vous besoin de cron être en cours d'exécution à l'intérieur du conteneur, ou pourriez-vous créer une tâche cron sur l'hôte qui exécute ce conteneur à l'heure de faire son travail?
Il doit être en cours d'exécution à l'intérieur du conteneur.
Vous avez déjà vu question ?
Oui, cette question est fondamentalement juste les contours de ma première référence.
Cela peut sembler une question stupide, mais c'est votre conteneur en cours d'exécution? Je vois que vous avez 2 CMD directives à la fin de votre Dockerfile, je pense que la seconde va remplacer le premier. En supposant qu'il n', service cron start devrait se terminer avec succès, une fois la commande terminée, le récipient doit être fermé.

OriginalL'auteur Tory | 2016-10-21