我有一个运行Apache的docker容器。这是在root用户下使用docker-compose启动的。在此容器中,de webserver在默认用户www-data下运行。通过conjob我触发php脚本上传图像。如果cronjob在root下运行,这可以正常工作。但我希望在www-data下运行conjob,以便上传的文件与通过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脚本不再被触发。我认为这与权限设置有关?
答案 0 :(得分:1)
如果您希望容器内的www-data执行import
命令,请将其指定为docker:
*/1 * * * * docker exec --user www-data apache_1 php /var/www/import
根据您的尝试,用户www-data无权运行docker命令。并且,您没有选择在crontab -e
中指定用户名(您尝试做的应该在/ etc / crontab中,或者使用su / sudo)。
答案 1 :(得分:0)
如果您在登录root用户帐户时尝试以用户身份运行命令,则命令应为:
su www-data; docker exec apache_1 php /var/www/import
否则您需要切换到www-data用户(sudo su www-data),然后编辑用户的cron作业(crontab -e)。每个用户都有自己的cronjobs。