最近在練習使用 docker 建立產品環境,遇到一個權限問題,container 的內容是隔離的,但我們網站有可能會修修改改,如果每次改好才 cp 進去的話很麻煩,所以我採用的方式是將 apache container 內的 /var/www/ 目錄掛出來,直接在本機編輯檔案,如果是靜態網站的話都還好,如果需要用到寫入權限的時候會發生問題。
本機檔案的權限是 root:root,但 container 內的 apache 的權限是 www-data:www-data,所以透過 apache 執行檔案遇到 root:root 時 755 是沒有作用的,開 777 又不妥,目前綜合網路的解法就是在本機建立一個帳號,確定他的 uid,然後將 container 內的 www-data 帳號 uid 改相同,就可以解決這件事,步驟如下
$ useradd -u 3000 docker -g docker
$ chown docker -R /var/www/
Dockerfile
FROM php-apache
RUN usermod -u 3000 www-data
這樣的話外部的檔案權限就是 docker:root
,而 container 內會是 www-data:root
,後面 root 可以忽略,寫入權限就完成了。
沒有留言:
張貼留言