我有一个与Apache一起运行的docker容器。这是在root用户下使用docker-compose启动的。在这个容器中,de webserver在默认用户www-data下运行。通过conjob,我触发php脚本来上传图片。如果cronjob在root下运行,则可以很好地工作。但我想让conjob在www-data下运行,这样上传的文件与直接通过apache上传的文件具有相同的所有者。
我使用下面的cronjob (这行得通):
*/1 * * * * docker exec apache_1 php /var/www/import但是当我将cronjob用户更改为www-data时(不再触发):
*/1 * * * * www-data docker exec apache_1 php /var/www/import使用最后一个cronjob时,容器内的php脚本不再被触发。我相信这和权限设置有关吧?
发布于 2017-08-02 06:07:34
如果您希望容器内的www- import执行数据命令,请将其指定为docker:
*/1 * * * * docker exec --user www-data apache_1 php /var/www/import在您尝试过的情况下,用户www-data没有权限运行docker命令。而且,您没有这样的选项来在crontab -e中指定用户名(您尝试执行的操作应该在/etc/crontab中,或者使用su/sudo)。
发布于 2017-08-02 05:56:51
如果您尝试在登录到root用户帐户时以用户身份运行命令,则命令应为:
su www-data; docker exec apache_1 php /var/www/import否则,您需要切换到www-data用户(sudo su www-data),然后编辑该用户的cron作业(crontab -e)。每个用户都有自己的cronjob。
https://stackoverflow.com/questions/45447983
复制相似问题