【问题标题】:owncloud cron execution within dockerowncloud cron 在 docker 中执行
【发布时间】:2016-01-18 12:52:12
【问题描述】:

我正在使用 php-apache 映像来创建 owncloud 安装。我想使用系统 cronjob 来执行 cron.php,因此我运行:

RUN echo "*/3 * * * * php -f /var/www/html/cron.php >> /oc_data/cron.log" > /cron.conf \
        && crontab -u www-data /cron.conf

入口点脚本以 cron 开头:

cron -f

它被执行,但 owncloud.log 显示以下消息:

"app":"cron","message":"Failed to connect to the database: An exception occured in driver: could not find driver"

有趣的是,如果我进入 docker 容器并执行我用于 cronjob 的命令,它就可以工作。 php --ini 显示所有 php conf.d 扩展名,包括 mysql.so 和 pdo_mysql.so。

我还尝试将 cron.conf 文件添加为 root 用户,结果相同。

任何想法,这里发生了什么?

【问题讨论】:

    标签: php mysql cron docker


    【解决方案1】:

    请使用正确的文件夹来保存您的 cron 文件:“/etc/cron.d/”,使用 COPY 将 cron 文件复制到容器内部,并在 CMD 参数中使用“cron -f”代替 ENTRYPOINT。

    【讨论】:

    • 通常我将文件放在哪里以及如何启用它并不重要。但是我将文件放入 cron.d 文件夹并使用 CMD 启动 cron -f ,但这没有区别。在 owncloud.log 中仍然收到相同的错误消息
    【解决方案2】:

    好的,总是使用绝对路径!!

    在 docker 容器中使用 bash 的 php 命令的路径与使用的 cron 不同。

    使用which php 获取正确的路径并将其添加到cronjob。

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 1970-01-01
      • 2019-11-21
      • 2020-09-08
      • 2017-08-28
      • 2013-08-01
      • 2014-04-28
      • 2015-01-05
      • 1970-01-01
      相关资源
      最近更新 更多