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
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
# Empty space
虽然我不能让cron在那个特定的容器中工作,但我能够为cron创建一个独立的docker容器,并成功地使它自动运行。
至于cron容器的设置,我遵循了链接的文章,使用Docker-Julien Boulay运行了一个cron作业,并且能够使其工作。
我所做的是让CMD直接调用cron,如下所示:
CMD /usr/sbin/cron -f
在此之前,我将crontab添加到容器中,并使用以下命令将其分配为根crontab:
RUN crontab /root/mycrontab
您不需要对/etc/cron.d
中的文件调用crontab命令,但您确实需要这些文件具有正确的语法。使用您的示例,而不是这样:
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1
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 touch /var/log/cron.log
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
CMD /usr/sbin/cron -f
克罗塔布
* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1
另一种选择是:
FROM microsoft/dotnet:latest
RUN apt-get update && apt-get install -y cron
COPY . /app
WORKDIR /app
ADD crontab /root/
RUN crontab /root/crontab
RUN touch /var/log/cron.log
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
CMD /usr/sbin/cron -f
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
我一直试图在我的docker容器中运行cron作业,但当容器启动时,我似乎无法让cron服务运行。我可以远程进入运行容器并运行“cron”以使服务在没有问题的情况下启动。我在我的DockerFile中包含了这个,为什么命令没有被执行呢? Docker-compose.yml
问题内容: 我使用以下命令创建了容器: 以下是命令: 真的没有太多要说的,我希望容器能启动并保持正常运行。这是日志: 问题答案: 您正在尝试运行,它是需要tty 才能运行的交互式外壳。使用,在“分离”模式下运行此命令实际上没有任何意义,但是您可以通过添加到命令行来做到这一点,以确保容器具有与其关联的有效tty并保持连接状态: 在启动分离的容器时,您通常会运行某种长期存在的非交互式进程(例如,或We
我有一个Dockerfile来在容器中安装MySQL server,然后我这样开始: 但MySQL服务不会自动启动,我必须手动运行(从容器内): 如何在运行docker容器时自动启动MySQL服务?
问题内容: 我有一个Dockerfile将MySQL服务器安装在一个容器中,然后我开始像这样: 但是MySQL服务不会自动启动,我必须手动运行(从容器内部): 运行docker容器时如何自动启动MySQL服务? 问题答案: 首先,有一个 问题, 在您的: Docker映像不会保存正在运行的进程。因此,您的命令仅在阶段执行,并在构建完成后停止。相反,您需要使用或如下所示的命令在启动容器时指定命令:
我正在尝试使用Docker Compose(在Windows上使用Docker Machine)来启动一组Docker容器。 成功运行。当我运行时,我会得到以下输出: 我确认了docker容器没有运行。如何启动集装箱?
我正在尝试使用Docker Compose(在Windows上使用Docker Machine)来启动一组Docker容器。 My Docker-compose.yml: 已成功运行。运行时,得到以下输出: 我确实确认了docker容器没有运行。如何启动容器?