2016-01-22 63 views
5

我有一個docker-compose的docker的symfony安裝程序,除了當我運行緩存時清除工作良好,清除,控制檯無法訪問這些文件。緩存文件的symfony泊塢窗權限問題

我可以繞過許可問題,取消註釋umask(0000);在控制檯和web/app_dev.php但我想按照推薦運行symfony。

我做的是旋起容器docker-compose up
然後我進入容器。容器通過數據捲包含apache,php和代碼。

docker exec -i -t apache_1 /bin/bash 

顯然,我正在以root身份登錄,然後,當我在高速運行

app/console cache:clear 

所有文件都屬於root用戶。 www-data作爲web服務器用戶現在無法再訪問這些文件。

我也可以通過以www-data登錄來繞過這個問題,然後由cache:clear生成的文件屬於www-data,並且web服務器可以訪問它們。

docker exec -u www-data -i -t apache_1 /bin/bash 

但是,這是我不土地在bash,但在/usr/sbin目錄/ NOLOGIN和不具有的東西的.bash_history等下行。

搜索我發現這是Dockerfile的一部分,以解決權限問題,但它對我沒有任何影響。

RUN usermod -u 1000 www-data 

如果我沒有理解糾正這種切換用戶1000到www數據,但因爲我的根,當我登錄到該容器,這並不工作,我承擔。

那麼,爲什麼我當我登錄到容器中,這是怎麼usermod命令想與我們合作?

泊塢窗,compose.yml:

proxy: 
    image: jwilder/nginx-proxy:latest 
    volumes: 
    - /var/run/docker.sock:/tmp/docker.sock:ro 
    ports: 
    - "80:80" 
elastic: 
    build: docker/elasticsearch 
    ports: 
    - "9200:9200" 
    volumes: 
    - data/elasticsearch:/usr/local/elasticsearch/data 
apache: 
    build: docker/apachephp 
    environment: 
    - VIRTUAL_HOST=myapp.dev 
    volumes: 
    - ./code:/var/www/app 
    - ./dotfiles/.bash_history:/.bash_history 
    - ./logs:/var/www/app/app/logs 
    links: 
    - elastic 
    expose: 
    - "80" 
+0

http://symfony.com/doc/current/book/installation.html#book-installation-permissions – malcolm

+0

害怕chmod + a在ubuntu中不可用,並且setfacl不能使用默認的碼頭設置 – ivoba

+0

可以嗎請添加您的docker-compose.yml嗎? – Snroki

回答

4

我想改變www-data小號用戶ID到主機用戶的ID是一個很好的解決方案,爲主機用戶權限是相當容易的設置。

#change www-data`s UID inside a Dockerfile 
RUN usermod -u [USERID] www-data 

用戶ID 1000是Mac
對於大多數Linux系統AFAIK ... 501默認可以在主機系統上運行id -u找出來。

然後,您可以登錄到容器爲www數據運行的symfony命令

docker exec -it -u www-data [CONTAINER] bash

我想知道你怎麼能動態地設置用戶標識的容器版本。 我猜通過--build-arg把它傳遞給泊塢窗,撰寫會的方式

docker-compose build --build-arg USERID=$(id -u) 

...但沒有設法訪問該變種在Dockerfile呢。

+0

時動態設置這樣的: 根:0 WWW的數據:33 Ubuntu的:1000個 –

+0

感謝,進入容器小號bash作爲WWW-數據有效。對於所有其他人,我們所有關於這樣的問題的經驗都進入了https://github.com/nerdpress-org/docker-sf3,希望它可以幫助... – ivoba