2019/07/23

Apache Docker 權限問題

最近在練習使用 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 可以忽略,寫入權限就完成了。

2019/07/10

Docker Compose Note

Docker Compose Document

version: '3'

services:
    redis:
      image: redis
      container_name: redis
      networks:
        default:
          ipv4_address: '172.18.0.12'
    nginx:
      image: nginx
      container_name: ngx
      volumes:
        - default:/data/
      networks:
        default:
          ipv4_address: '172.18.0.11'
      ports:
        - '8080:80'
      depends_on:
        - redis

networks:
  default:
    external:
      name: chan-network

volumes:
  default:
    external:
      name: chan-volume