Docker为非root用户创建卷创建

Ily*_*nev 9 docker docker-compose

我正在尝试使用docker-compose为我的Web应用程序创建一个docker镜像.我的Web应用程序需要在文件系统上写入文件的权限.

我的Dockerfile包含

# some other stuff
RUN addgroup -S web && adduser -S -g web web
USER web  
Run Code Online (Sandbox Code Playgroud)

我想将当前.目录挂载到/codedocker容器中;

当我执行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
Run Code Online (Sandbox Code Playgroud)

如你所见,我试图用我的用户uid和gid参数传递driver_opts; 但它没有帮助.

我的问题是:如何将我的目录挂载./code用户的docker容器权限中web

操作系统:Ubuntu 16.04

docker version 17.09.0-ce

docker-compose版本1.8.0

小智 4

您可以尝试:

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

您的用户将能够写入已安装的目录。