如果没有在根

时间:2017-08-01 21:30:43

标签: docker docker-compose

我有一个运行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脚本不再被触发。我认为这与权限设置有关?

2 个答案:

答案 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。