2017-10-16 129 views
2

我正在嘗試爲我的web應用程序創建一個docker-compose的docker圖像。我的Web應用程序需要在文件系統上寫入文件的權限。非root用戶的Docker-compose卷創建

我Dockerfile包含

# some other stuff 
RUN addgroup -S web && adduser -S -g web web 
USER web 

我想掛載我目前.目錄/code在泊塢窗容器;

當我執行docker-compose build & & docker-compose up,它發生,我/code目錄中的容器是擁有用戶「1000:1000」,我在Dockerfile創建不是我的用戶。

version: '2'                  

services:                       
    admin:                   
    build:                  
     context: .                 
     dockerfile: Dockerfile              
    command: python manage.py 0.0.0.0 8030       
    volumes:                  
    - .:/code                  
    ports:                  
    - 9000:8030                 
    stdin_open: true                
    tty: true                             
volumes:                   
    .:                    
    driver_opts:                 
     o: uid=100,gid=65533 

正如你所看到的,我試圖用我的用戶uid和gid參數傳遞driver_opts;但它沒有幫助。

我的問題是:我應該如何將我的目錄.設置爲/code,並以docker container權限掛載用戶web

操作系統:Ubuntu的16.04

泊塢窗版本17.09.0策

泊塢窗,撰寫版本1.8.0

回答

1

你可以嘗試使用:

RUN addgroup -g 1000 web && \ adduser -G web -g web -s /bin/sh -D web

用戶將能夠寫入掛載的目錄。

+0

是的,差不多這個。通過明確地設置用戶uid和gid來解決這個問題:'RUN addgroup -S web -g 1000 && adduser -u 1000 -G web -D web'。它通過編寫權限解決了我的問題。但是爲什麼我的音量總是由'1000:1000'擁有並且我怎樣才能改變這一點 –