2017-08-01 43 views
1

我有一個使用Apache運行的docker容器。這是以root用戶的docker-compose開始的。在這個容器中,de webserver在默認用戶www-data下運行。通過conjob我觸發php腳本上傳圖片。如果cronjob在根目錄下運行,這工作正常。但我希望在www-data下運行conjob,所以上傳的文件與通過apache直接上傳的文件具有相同的所有者。如果不在根目錄下運行,Docker cronjob權限不正確

我用下面的cronjob(這工作):

*/1 * * * * docker exec apache_1 php /var/www/import 

但是,當我改變的cronjob用戶WWW的數據(不再次觸發):

*/1 * * * * www-data docker exec apache_1 php /var/www/import 

有了上次的cronjob容器內的php腳本不再被觸發。我相信它與權限設置有關?

回答

0

如果你試圖運行命令,用戶在登錄到root用戶帳戶的命令應該是:

su www-data; docker exec apache_1 php /var/www/import 

否則,你需要切換到www數據用戶(須藤蘇www數據),然後編輯用戶的cron作業(crontab -e)。每個用戶都有自己的cronjobs。

+0

www-data無法運行docker命令(默認情況下) – Robert

+0

sudo groupadd docker – thomasmeadows

+0

'php'仍然會以root身份運行,因爲默認情況下,docker會這樣做 – Robert

1

如果你想通過WWW的數據容器內執行的import命令,指定它泊塢窗:

*/1 * * * * docker exec --user www-data apache_1 php /var/www/import 

有了你已經嘗試了什麼,用戶WWW的數據還沒有權限運行碼頭命令。而且,您還沒有這樣的選項來指定crontab -e中的用戶名(您嘗試執行的操作應該在/ etc/crontab中,或使用su/sudo)。